結果

問題 No.3677 Global Checksum
コンテスト
ユーザー harurun
提出日時 2026-08-10 11:38:12
言語 PyPy3
(7.3.23)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
TLE  
実行時間 -
コード長 1,768 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 250 ms
コンパイル使用メモリ 95,824 KB
実行使用メモリ 207,616 KB
最終ジャッジ日時 2026-09-04 22:16:24
合計ジャッジ時間 5,216 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge1_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 12 TLE * 8
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import sys

def main():
    rd = sys.stdin.buffer
    write = sys.stdout.write

    H, W = map(int, rd.readline().split())
    data = rd.read()

    MASK = 0xFFFFFFFF

    # 1行しかない場合
    # T = S[0] なので C[0] = 2*S[0] mod 2^32
    if H == 1:
        num = 0
        total = 0

        for c in data:
            if c > 32:
                num = num * 10 + c - 48
            else:
                total += num
                num = 0

        # 末尾に改行がない場合にも対応
        total += num

        write(str((total << 1) & MASK))
        return

    S = [0] * H

    # 1列の場合は row_sum と改行判定が不要
    if W == 1:
        r = 0
        num = 0
        total = 0

        for c in data:
            if c > 32:
                num = num * 10 + c - 48
            else:
                S[r] = num
                total += num
                r += 1
                num = 0

        if r < H:
            S[r] = num
            total += num

    else:
        r = 0
        num = 0
        row_sum = 0
        total = 0

        for c in data:
            if c > 32:
                num = num * 10 + c - 48
            elif c == 10:
                row_sum += num

                S[r] = row_sum
                total += row_sum

                r += 1
                num = 0
                row_sum = 0
            else:
                row_sum += num
                num = 0

        if r < H:
            row_sum += num
            S[r] = row_sum
            total += row_sum

    T = total & MASK

    # 巨大な入力バッファを出力生成前に解放
    del data

    # 加算・mod・str化を1回の走査にまとめる
    out = [str((s + T) & MASK) for s in S]

    write('\n'.join(out))

main()
0