結果

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

ソースコード

diff #
raw source code

import sys
import pypyjit
from __pypy__ import builders

# 大きな入力では早めに machine code 化する
pypyjit.set_param(
    threshold=200,
    trace_eagerness=20,
)

MASK = 0xFFFFFFFF


def main():
    data = sys.stdin.buffer.read()
    p = 0

    # H
    H = 0
    while True:
        c = data[p]
        p += 1
        if c < 48:
            break
        H = H * 10 + c - 48

    # W
    W = 0
    while True:
        c = data[p]
        p += 1
        if c < 48:
            break
        W = W * 10 + c - 48

    # 最後に改行がない入力への保険。
    # 通常のジャッジ入力ではここには入らない。
    if data[-1] >= 48:
        data += b'\n'

    S = [0] * H

    total = 0
    r = 0

    # 行末かどうかを '\n' で判定せず、
    # W 個読んだら次の行へ進む。
    while r < H:
        row = 0
        j = 0

        while j < W:
            x = 0

            # 数字のみを読む。
            # 空白でも改行でも c < 48 なので同じ扱い。
            while True:
                c = data[p]
                p += 1

                if c < 48:
                    break

                x = x * 10 + c - 48

            row += x
            j += 1

        S[r] = row
        total += row
        r += 1

    T = total & MASK

    # ここは現在最速だった StringBuilder 版を維持
    out = builders.StringBuilder(H * 4)
    append = out.append

    for s in S:
        append(str((s + T) & MASK))
        append('\n')

    sys.stdout.write(out.build())


main()
0