結果
| 問題 | No.60 魔法少女 |
| コンテスト | |
| ユーザー |
hotpepsi
|
| 提出日時 | 2020-04-19 12:35:09 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 170 ms / 5,000 ms |
| コード長 | 1,156 bytes |
| コンパイル時間 | 596 ms |
| コンパイル使用メモリ | 79,492 KB |
| 実行使用メモリ | 14,208 KB |
| 最終ジャッジ日時 | 2024-10-05 02:21:06 |
| 合計ジャッジ時間 | 3,041 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 10 |
ソースコード
#include <iostream>
#include <sstream>
#include <algorithm>
#include <numeric>
#include <vector>
using namespace std;
typedef long long LL;
int main(int argc, char* argv[]) {
int n, k;
cin >> n >> k;
vector<int> ex(n), ey(n), ehp(n), ax(k), ay(k), aw(k), ah(k), ad(k);
for (int i = 0; i < n; ++i) {
cin >> ex[i] >> ey[i] >> ehp[i];
ex[i] += 500;
ey[i] += 500;
}
for (int i = 0; i < k; ++i) {
cin >> ax[i] >> ay[i] >> aw[i] >> ah[i] >> ad[i];
ax[i] += 500;
ay[i] += 500;
}
vector<vector<LL>> sum(1002, vector<LL>(1002));
for (int i = 0; i < k; ++i) {
int left = ax[i], right = min(1000, ax[i] + aw[i]) + 1;
int top = ay[i], bottom = min(1000, ay[i] + ah[i]) + 1;
sum[top][left] += ad[i];
sum[top][right] -= ad[i];
sum[bottom][left] -= ad[i];
sum[bottom][right] += ad[i];
}
for (int y = 0; y <= 1001; ++y) {
for (int x = 1; x <= 1001; ++x) {
sum[y][x] += sum[y][x - 1];
}
}
for (int y = 1; y <= 1001; ++y) {
for (int x = 0; x <= 1001; ++x) {
sum[y][x] += sum[y - 1][x];
}
}
LL ans = 0;
for (int i = 0; i < n; ++i) {
ans += max(0LL, ehp[i] - sum[ey[i]][ex[i]]);
}
cout << ans << endl;
return 0;
}
hotpepsi