結果
問題 | No.1490 スライムと爆弾 |
ユーザー |
![]() |
提出日時 | 2022-06-29 00:19:32 |
言語 | C++17(clang) (17.0.6 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,820 bytes |
コンパイル時間 | 3,775 ms |
コンパイル使用メモリ | 141,688 KB |
実行使用メモリ | 39,296 KB |
最終ジャッジ日時 | 2024-11-21 19:32:43 |
合計ジャッジ時間 | 8,784 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 14 WA * 14 |
ソースコード
#include <cassert>#include <cmath>#include <algorithm>#include <iostream>#include <iomanip>#include <climits>#include <map>#include <queue>#include <set>#include <cstring>#include <vector>using namespace std;typedef long long ll;ll S[2010][2010];int main() {int H, W, N, M;cin >> H >> W >> N >> M;int T[N];int U[N];int L[N];int R[N];ll A[N];for (int i = 0; i < N; ++i) {cin >> T[i] >> U[i] >> L[i] >> R[i] >> A[i];}int X[M];int Y[M];int B[M];ll C[M];for (int i = 0; i < M; ++i) {cin >> X[i] >> Y[i] >> B[i] >> C[i];}memset(S, 0, sizeof(S));for (int i = 0; i < M; ++i) {int y = Y[i];int x = X[i];int b = B[i];ll c = C[i];int ly = max(1, y - b);int lx = max(1, x - b);int ry = min(H, y + b);int rx = min(W, x + b);// fprintf(stderr, "(%d, %d) - (%d, %d)\n", ly, lx, ry, rx);S[ly][lx] += c;S[ly][rx + 1] -= c;S[ry + 1][lx] -= c;S[ry + 1][rx + 1] += c;}for (int i = 0; i < 2; ++i) {for (int y = 0; y <= H; ++y) {ll sum = 0;for (int x = 0; x <= W; ++x) {sum += S[y][x];S[y][x] = sum;}}for (int x = 0; x <= W; ++x) {ll sum = 0;for (int y = 0; y <= H; ++y) {sum += S[y][x];S[y][x] = sum;}}}/*for (int y = 0; y <= H; ++y) {for (int x = 0; x <= W; ++x) {cerr << S[y][x] << " ";}cerr << endl;}*/int ans = 0;for (int i = 0; i < N; ++i) {int ly = T[i];int ry = U[i];int lx = L[i];int rx = R[i];// fprintf(stderr, "(%d, %d) - (%d, %d)\n", ly, lx, ry, rx);ll damage = S[ry][rx] - S[ry][lx - 1] - S[ly - 1][rx] + S[ly - 1][lx - 1];if (damage < A[i]) ++ans;}cout << ans << endl;return 0;}