結果
| 問題 |
No.1490 スライムと爆弾
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-01-02 13:28:31 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 405 ms / 2,000 ms |
| コード長 | 1,368 bytes |
| コンパイル時間 | 2,095 ms |
| コンパイル使用メモリ | 205,592 KB |
| 最終ジャッジ日時 | 2025-02-09 23:03:04 |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 28 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
int main() {
int H, W, N, M;
cin >> H >> W >> N >> M;
vector<vector<long long>> fi(H+1, vector<long long>(W+1));
vector<vector<int>> query;
for (int i = 0; i < N; i++) {
int T, U, L, R, A;
cin >> T >> U >> L >> R >> A;
T--; L--;
vector<int> a = {T, U, L, R, A};
query.emplace_back(a);
}
for (int i = 0; i < M; i++) {
int X, Y, B, C;
cin >> X >> Y >> B >> C;
int T = max(0, X-B-1), U = min(H, X+B);
int L = max(0, Y-B-1), R = min(W, Y+B);
fi[T][L] += C;
fi[T][R] -= C;
fi[U][L] -= C;
fi[U][R] += C;
}
for (int i = 0; i <= H; i++) {
for (int j = 1; j <= W; j++) {
fi[i][j] += fi[i][j-1];
}
}
for (int j = 0; j <= W; j++) {
for (int i = 1; i <= H; i++) {
fi[i][j] += fi[i-1][j];
}
}
vector<vector<long long>> rui(H+1, vector<long long>(W+1));
for (int i = 0; i < H; i++) {
for (int j = 0; j < W; j++) {
rui[i+1][j+1] = rui[i+1][j] + rui[i][j+1] - rui[i][j] + fi[i][j];
}
}
int ans = 0;
for (auto q : query) {
long long a = rui[q[0]][q[2]] + rui[q[1]][q[3]] - rui[q[0]][q[3]] - rui[q[1]][q[2]];
ans += q[4] > a;
}
cout << ans << endl;
}