第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)


この記事が気に入ったらサポートをしてみませんか?