結果
問題 | No.60 魔法少女 |
ユーザー | yuki2006 |
提出日時 | 2014-11-09 21:15:22 |
言語 | Python2 (2.7.18) |
結果 |
AC
|
実行時間 | 2,144 ms / 5,000 ms |
コード長 | 1,077 bytes |
コンパイル時間 | 240 ms |
コンパイル使用メモリ | 6,948 KB |
実行使用メモリ | 50,560 KB |
最終ジャッジ日時 | 2024-12-31 08:55:39 |
合計ジャッジ時間 | 23,142 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 10 |
ソースコード
# -*- coding: utf-8 -*- N, K = map(int, raw_input().split()) SIZE = 1000 + 2 GETA = 500 field = [[0 for i in xrange(SIZE + 1)] for i in xrange(SIZE + 1)] imosField = [[0 for i in xrange(SIZE + 1)] for i in xrange(SIZE + 1)] for _ in xrange(N): X, Y, H = map(int, raw_input().split()) field[X + GETA][Y + GETA] = H for _ in xrange(K): AX, AY, W, H, D = map(int, raw_input().split()) MX = min(AX + GETA + W + 1, SIZE) MY = min(AY + GETA + H + 1, SIZE) imosField[AX + GETA][AY + GETA] += D imosField[MX][AY + GETA] -= D imosField[AX + GETA][MY] -= D imosField[MX][MY] += D # X方向に累積和で算出 for y in xrange(SIZE + 1): for x in xrange(SIZE): imosField[x + 1][y] += imosField[x][y] # Y方向に累積和で算出 for x in xrange(SIZE + 1): for y in xrange(SIZE): imosField[x][y + 1] += imosField[x][y] # ダメージを与える total = 0 for x in xrange(SIZE + 1): for y in xrange(SIZE + 1): total += max(field[x][y] - imosField[x][y], 0) print total