結果
| 問題 | No.1490 スライムと爆弾 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-10-29 23:27:40 |
| 言語 | C++23(gcc16) (gcc 16.2.0 + boost 1.92.0 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 79 ms / 2,000 ms |
| + 727µs | |
| コード長 | 1,317 bytes |
| 記録 | |
| コンパイル時間 | 1,651 ms |
| コンパイル使用メモリ | 178,072 KB |
| 実行使用メモリ | 37,120 KB |
| 最終ジャッジ日時 | 2026-10-29 23:27:47 |
| 合計ジャッジ時間 | 4,851 ms |
|
ジャッジサーバーID (参考情報) |
judge7_0 / judge1_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 28 |
ソースコード
#include <iostream>
#include <vector>
using namespace std;
using ll = long long;
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int H, W, N, M; cin>>H>>W>>N>>M;
vector<int> T(N), U(N), L(N), R(N);
vector<ll> A(N);
for (int i=0;i<N;i++) cin>>T[i]>>U[i]>>L[i]>>R[i]>>A[i];
vector<vector<ll>> field(H+1, vector<ll>(W+1, 0));
for (int i=0;i<M;i++){
int X, Y, B; ll C;
cin>>X>>Y>>B>>C;
int Xmin=max(X-B, 1), Xmax=min(X+B, H)+1;
int Ymin=max(Y-B, 1), Ymax=min(Y+B, W)+1;
field[Xmin][Ymin] += C;
if (Xmax<=H) field[Xmax][Ymin] -= C;
if (Ymax<=W) field[Xmin][Ymax] -= C;
if (Xmax<=H && Ymax<=W) field[Xmax][Ymax] += C;
}
for (int i=1;i<=H;i++){
for (int j=1;j<=W;j++) field[i][j] += field[i-1][j];
}
for (int i=1;i<=H;i++){
for (int j=1;j<=W;j++) field[i][j] += field[i][j-1];
}
for (int i=1;i<=H;i++){
for (int j=1;j<=W;j++) field[i][j] += field[i-1][j];
}
for (int i=1;i<=H;i++){
for (int j=1;j<=W;j++) field[i][j] += field[i][j-1];
}
int ans = 0;
for (int i=0;i<N;i++){
ll damage = field[U[i]][R[i]]-field[U[i]][L[i]-1]-field[T[i]-1][R[i]]+field[T[i]-1][L[i]-1];
if(damage<A[i]) ans++;
}
cout << ans << "\n";
}