提出 #35180310


ソースコード 拡げる

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin >> n;
    vector a(n, vector(n, 0));
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            cin >> a[i][j];
        }
    }
    vector src(n, vector(n, vector<int>()));
    src[0][0].push_back(a[0][0]);
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            if (i + j >= n) {
                continue;
            }
            if (i > 0) {
                for (const int x : src[i - 1][j]) {
                    src[i][j].push_back(x ^ a[i][j]);
                }
            }
            if (j > 0) {
                for (const int x : src[i][j - 1]) {
                    src[i][j].push_back(x ^ a[i][j]);
                }
            }
        }
    }
    vector dst(n, vector(n, vector<int>()));
    dst[n - 1][n - 1].push_back(a[n - 1][n - 1]);
    for (int i = n - 1; i >= 0; --i) {
        for (int j = n - 1; j >= 0; --j) {
            if (i + j < n - 1) {
                continue;
            }
            if (i + 1 < n) {
                for (const int x : dst[i + 1][j]) {
                    dst[i][j].push_back(x ^ a[i][j]);
                }
            }
            if (j + 1 < n) {
                for (const int x : dst[i][j + 1]) {
                    dst[i][j].push_back(x ^ a[i][j]);
                }
            }
        }
    }
    long long ans = 0;
    for (int i = 0; i < n; ++i) {
        const int j = n - i - 1;
        sort(begin(dst[i][j]), end(dst[i][j]));
        for (const int x : src[i][j]) {
            const int val = a[i][j] ^ x;
            ans += upper_bound(begin(dst[i][j]), end(dst[i][j]), val) - lower_bound(begin(dst[i][j]), end(dst[i][j]), val);
        }
    }
    cout << ans << '\n';
    return 0;
}

提出情報

提出日時
問題 F - XOR on Grid Path
ユーザ KoD
言語 C++ (GCC 9.2.1)
得点 500
コード長 1855 Byte
結果 AC
実行時間 141 ms
メモリ 12596 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 500 / 500
結果
AC × 3
AC × 44
セット名 テストケース
Sample example_00.txt, example_01.txt, example_02.txt
All example_00.txt, example_01.txt, example_02.txt, test_00.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt
ケース名 結果 実行時間 メモリ
example_00.txt AC 7 ms 3564 KiB
example_01.txt AC 2 ms 3428 KiB
example_02.txt AC 2 ms 3576 KiB
test_00.txt AC 44 ms 12456 KiB
test_01.txt AC 57 ms 12404 KiB
test_02.txt AC 55 ms 12592 KiB
test_03.txt AC 55 ms 12364 KiB
test_04.txt AC 7 ms 3780 KiB
test_05.txt AC 4 ms 3568 KiB
test_06.txt AC 6 ms 3712 KiB
test_07.txt AC 6 ms 3764 KiB
test_08.txt AC 3 ms 3440 KiB
test_09.txt AC 58 ms 12352 KiB
test_10.txt AC 67 ms 12320 KiB
test_11.txt AC 2 ms 3372 KiB
test_12.txt AC 2 ms 3540 KiB
test_13.txt AC 3 ms 3428 KiB
test_14.txt AC 2 ms 3536 KiB
test_15.txt AC 5 ms 3712 KiB
test_16.txt AC 60 ms 12404 KiB
test_17.txt AC 116 ms 12596 KiB
test_18.txt AC 117 ms 12440 KiB
test_19.txt AC 62 ms 8064 KiB
test_20.txt AC 2 ms 3368 KiB
test_21.txt AC 9 ms 3896 KiB
test_22.txt AC 122 ms 12424 KiB
test_23.txt AC 2 ms 3448 KiB
test_24.txt AC 128 ms 12400 KiB
test_25.txt AC 141 ms 12424 KiB
test_26.txt AC 140 ms 12352 KiB
test_27.txt AC 3 ms 3588 KiB
test_28.txt AC 44 ms 5808 KiB
test_29.txt AC 3 ms 3476 KiB
test_30.txt AC 2 ms 3432 KiB
test_31.txt AC 2 ms 3552 KiB
test_32.txt AC 4 ms 3436 KiB
test_33.txt AC 141 ms 12316 KiB
test_34.txt AC 140 ms 12592 KiB
test_35.txt AC 4 ms 3656 KiB
test_36.txt AC 42 ms 5604 KiB
test_37.txt AC 3 ms 3460 KiB
test_38.txt AC 3 ms 3368 KiB
test_39.txt AC 9 ms 3696 KiB
test_40.txt AC 12 ms 4104 KiB