結果
| 問題 | No.3677 Global Checksum |
| コンテスト | |
| ユーザー |
harurun
|
| 提出日時 | 2026-08-10 11:55:53 |
| 言語 | PyPy3 (7.3.23) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,846 bytes |
| 記録 | |
| コンパイル時間 | 246 ms |
| コンパイル使用メモリ | 95,956 KB |
| 実行使用メモリ | 298,732 KB |
| 最終ジャッジ日時 | 2026-09-04 22:16:29 |
| 合計ジャッジ時間 | 4,780 ms |
|
ジャッジサーバーID (参考情報) |
judge1_0 / judge3_1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 11 TLE * 2 -- * 7 |
ソースコード
import sys
import _pypyjson
from __pypy__ import builders
MASK = 0xFFFFFFFF
def main():
rd = sys.stdin
H, W = map(int, rd.readline().split())
src = rd.read()
# 入力
# 1 2 3
# 4 5 6
#
# を
# [1,2,3,4,5,6]
#
# という JSON 配列に変換する。
#
# PyPy の str.replace は RPython 側の replace を使う。
s = src.replace(' ', ',').replace('\n', ',')
# 末尾改行があると最後が ',' になる。
# その場合はダミーの 0 を追加する。
# T に加えても 0 なので pop すら不要。
if src[-1] == '\n':
s = ''.join(('[', s, '0]'))
else:
s = ''.join(('[', s, ']'))
# ここで全整数を RPython 側で一気にパース
a = _pypyjson.loads(s)
# T = 全 A_ij の和 mod 2^32
# ダミー 0 があっても問題なし
T = sum(a) & MASK
# a の先頭 H 要素を S_i で上書きする。
# 新しい S 配列を作らない。
if W == 1:
pass
elif W == 2:
j = 0
for i in range(H):
a[i] = a[j] + a[j + 1]
j += 2
elif W == 3:
j = 0
for i in range(H):
a[i] = a[j] + a[j + 1] + a[j + 2]
j += 3
elif W == 4:
j = 0
for i in range(H):
a[i] = a[j] + a[j + 1] + a[j + 2] + a[j + 3]
j += 4
else:
j = 0
for i in range(H):
end = j + W
sm = 0
while j < end:
sm += a[j]
j += 1
a[i] = sm
# 前に比較的速かった StringBuilder をそのまま使用
out = builders.StringBuilder(H * 4)
append = out.append
for i in range(H):
append(str((a[i] + T) & MASK))
append('\n')
sys.stdout.write(out.build())
main()
harurun