第10回 JOI 本選 1 惑星探査【C++】【Python】
問題はこちら。
Pythonで間に合わなかったのでC++で書いた。
# include <bits/stdc++.h>
using namespace std;
using V = vector<int>;
using VV = vector<V>;
int main() {
int H, W; cin >> H >> W;
int K; cin >> K;
vector<string> board(H);
for (int h = 0; h < H; h++) cin >> board[h];
VV J(H + 1, V(W + 1, 0));
VV O(H + 1, V(W + 1, 0));
VV I(H + 1, V(W + 1, 0));
for (int h = 1; h <= H; h++) {
for (int w = 1; w <= W; w++) {
J[h][w] = J[h - 1][w] + J[h][w - 1] - J[h - 1][w - 1];
O[h][w] = O[h - 1][w] + O[h][w - 1] - O[h - 1][w - 1];
I[h][w] = I[h - 1][w] + I[h][w - 1] - I[h - 1][w - 1];
if (board[h - 1][w - 1] == 'J') J[h][w] += 1;
if (board[h - 1][w - 1] == 'O') O[h][w] += 1;
if (board[h - 1][w - 1] == 'I') I[h][w] += 1;
}
}
for (int k = 0; k < K; k++) {
int a, b, c, d; cin >> a >> b >> c >> d;
int j = J[c][d] - J[a - 1][d] - J[c][b - 1] + J[a - 1][b - 1];
int o = O[c][d] - O[a - 1][d] - O[c][b - 1] + O[a - 1][b - 1];
int i = I[c][d] - I[a - 1][d] - I[c][b - 1] + I[a - 1][b - 1];
cout << j << ' ' << o << ' ' << i << endl;
}
}
Pythonコードの供養
H, W = map(int, input().split())
K = int(input())
board = [input() for _ in range(H)]
J = [[0]*(W + 1) for _ in range(H + 1)]
O = [[0]*(W + 1) for _ in range(H + 1)]
I = [[0]*(W + 1) for _ in range(H + 1)]
for h in range(1, H + 1):
for w in range(1, W + 1):
J[h][w] = J[h - 1][w] + J[h][w - 1] - J[h - 1][w - 1]
O[h][w] = O[h - 1][w] + O[h][w - 1] - O[h - 1][w - 1]
I[h][w] = I[h - 1][w] + I[h][w - 1] - I[h - 1][w - 1]
if board[h - 1][w - 1] == "J":
J[h][w] += 1
if board[h - 1][w - 1] == "O":
O[h][w] += 1
if board[h - 1][w - 1] == "I":
I[h][w] += 1
for _ in range(K):
a, b, c, d = map(int, input().split())
j = J[c][d] - J[a - 1][d] - J[c][b - 1] + J[a - 1][b - 1]
o = O[c][d] - O[a - 1][d] - O[c][b - 1] + O[a - 1][b - 1]
i = I[c][d] - I[a - 1][d] - I[c][b - 1] + I[a - 1][b - 1]
print(j, o, i)
この記事が気に入ったらサポートをしてみませんか?