結果

問題 No.3677 Global Checksum
コンテスト
ユーザー 👑 みうね
提出日時 2026-09-05 11:54:03
言語 C++23
(gcc 15.3.0 + boost 1.92.0 + ACL)
コンパイル:
g++-15 -O2 -lm -std=c++23 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
AC  
実行時間 66 ms / 200 ms
+ 421µs
コード長 1,492 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 117 ms
コンパイル使用メモリ 40,576 KB
実行使用メモリ 8,576 KB
最終ジャッジ日時 2026-09-05 14:30:44
合計ジャッジ時間 11,758 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge4_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 20
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include <cstdio>
#include <cstdint>

using uint = uint32_t;

constexpr size_t BUF_SIZE = 1 << 20;

char buf[BUF_SIZE];
char *p = buf;
char *e = buf;

inline char gc() {
    if (p == e) {
        p = buf;
        e = buf + fread(buf, 1, BUF_SIZE, stdin);
    }
    return *p++;
}

inline uint read_uint() {
    uint x = 0;
    char c = gc();

    // 空白はすべて '0' より小さい
    while (c < '0') {
        c = gc();
    }

    // 入力には数字と空白しかないので c >= '0' だけで十分
    while (c >= '0') {
        x = x * 10 + (c & 15);
        c = gc();
    }

    return x;
}

uint S[1000000];

size_t out_pos = 0;

inline void pc(char c) {
    if (out_pos == BUF_SIZE) {
        fwrite(buf, 1, out_pos, stdout);
        out_pos = 0;
    }
    buf[out_pos++] = c;
}

inline void write_uint(uint x) {
    char s[10];
    uint n = 0;

    do {
        uint q = x / 10;
        s[n++] = static_cast<char>('0' + (x - q * 10));
        x = q;
    } while (x);

    while (n) {
        pc(s[--n]);
    }
    pc('\n');
}

int main() {
    uint H = read_uint();
    uint W = read_uint();

    uint T = 0;

    for (uint i = 0; i < H; ++i) {
        uint s = 0;
        for (uint j = 0; j < W; ++j) {
            s += read_uint();
        }
        S[i] = s;
        T += s;
    }

    // 入力を全部読み終わったので buf を出力用に再利用
    for (uint i = 0; i < H; ++i) {
        write_uint(S[i] + T);
    }

    fwrite(buf, 1, out_pos, stdout);
}
0