提出 #53520200
ソースコード 拡げる
#include <bits/stdc++.h> using namespace std; using ll = long long; #define rep(i, x) for (int i = 0; i < (x); i++) int main() { int H, W, Q; cin >> H >> W; vector<vector<int>> cell(H, vector<int>(W, 0)); for (int i = 0; i < H; i++) { for (int j = 0; j < W; j++) { cin >> cell[i][j]; } } cin >> Q; vector<int> A(Q), B(Q), C(Q), D(Q); for (int i = 0; i < Q; i++) { cin >> A[i] >> B[i] >> C[i] >> D[i]; A[i]--; B[i]--; C[i]--; D[i]--; } // 二次元累積和の計算 vector<vector<int>> sumCell(H + 1, vector<int>(W + 1, 0)); for (int i = 1; i <= H; i++) { for (int j = 1; j <= W; j++) { sumCell[i][j] = cell[i - 1][j - 1] + sumCell[i - 1][j] + sumCell[i][j - 1] - sumCell[i - 1][j - 1]; } } // クエリに応じた範囲内の合計値を計算 for (int i = 0; i < Q; i++) { int ans = sumCell[C[i] + 1][D[i] + 1]; if (A[i] > 0) ans -= sumCell[A[i]][D[i] + 1]; if (B[i] > 0) ans -= sumCell[C[i] + 1][B[i]]; if (A[i] > 0 && B[i] > 0) ans += sumCell[A[i]][B[i]]; cout << ans << endl; } return 0; }
提出情報
提出日時 | |
---|---|
問題 | A08 - Two Dimensional Sum |
ユーザ | ryoh1004 |
言語 | C++ 23 (gcc 12.2) |
得点 | 1000 |
コード長 | 1136 Byte |
結果 | AC |
実行時間 | 346 ms |
メモリ | 22448 KiB |
ジャッジ結果
セット名 | Sample | All | ||||
---|---|---|---|---|---|---|
得点 / 配点 | 0 / 0 | 1000 / 1000 | ||||
結果 |
|
|
セット名 | テストケース |
---|---|
Sample | sample01.txt |
All | max00.txt, random00.txt, random01.txt, random02.txt, random03.txt, random04.txt, sample01.txt |
ケース名 | 結果 | 実行時間 | メモリ |
---|---|---|---|
max00.txt | AC | 346 ms | 22448 KiB |
random00.txt | AC | 60 ms | 7896 KiB |
random01.txt | AC | 63 ms | 7380 KiB |
random02.txt | AC | 144 ms | 8608 KiB |
random03.txt | AC | 149 ms | 6596 KiB |
random04.txt | AC | 64 ms | 5916 KiB |
sample01.txt | AC | 1 ms | 3488 KiB |