結果
問題 |
No.60 魔法少女
|
ユーザー |
|
提出日時 | 2025-08-11 22:46:08 |
言語 | D (dmd 2.109.1) |
結果 |
AC
|
実行時間 | 142 ms / 5,000 ms |
コード長 | 1,032 bytes |
コンパイル時間 | 3,509 ms |
コンパイル使用メモリ | 206,092 KB |
実行使用メモリ | 17,064 KB |
最終ジャッジ日時 | 2025-08-11 22:46:19 |
合計ジャッジ時間 | 6,209 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 10 |
ソースコード
module main; // https://mmxsrup.hatenablog.com/entry/2016/09/30/154952 より // いもす法 import std; void main() { int N, K; readln.chomp.formattedRead("%d %d", N, K); auto X = new int[](N), Y = new int[](N), HP = new int[](N); foreach (ref x, ref y, ref hp; lockstep(X, Y, HP)) { readln.chomp.formattedRead("%d %d %d", x, y, hp); x += 500, y += 500; } auto imos = new int[][](1510, 1510); foreach (_; 0 .. K) { int ax, ay, w, h, d; readln.chomp.formattedRead("%d %d %d %d %d", ax, ay, w, h, d); ax += 500, ay += 500; // 左上 imos[ay][ax] += d; // 右上 imos[ay][ax + w + 1] -= d; // 左下 imos[ay + h + 1][ax] -= d; // 右下 imos[ay + h + 1][ax + w + 1] += d; } // 横方向の累積和 foreach (i; 0 .. 1505) foreach (j; 0 .. 1505) imos[i][j + 1] += imos[i][j]; // 縦方向の累積和 foreach (i; 0 .. 1505) foreach (j; 0 .. 1505) imos[i + 1][j] += imos[i][j]; long ans = 0; foreach (y, x, hp; lockstep(Y, X, HP)) ans += max(0L, hp - imos[y][x]); writeln(ans); }