結果

問題 No.3120 Lower Nim
ユーザー issaimaru
提出日時 2025-04-20 19:11:22
言語 Python3
(3.13.1 + numpy 2.2.1 + scipy 1.14.1)
結果
RE  
実行時間 -
コード長 2,162 bytes
コンパイル時間 278 ms
コンパイル使用メモリ 12,544 KB
実行使用メモリ 29,056 KB
平均クエリ数 1096.00
最終ジャッジ日時 2025-04-20 19:11:46
合計ジャッジ時間 22,403 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 22 WA * 10 RE * 9 TLE * 2
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys


def main():
    data = sys.stdin.readline().strip().split()
    if not data:
        return
    N = int(data[0])
    A = list(map(int, sys.stdin.readline().split()))

    K = 10**18


    xor_sum = 0
    for v in A:
        xor_sum ^= v


    first = (xor_sum != 0)
    if first:
        sys.stdout.write("First\n")
    else:
        sys.stdout.write("Second\n")
    sys.stdout.flush()


    partner = [-1] * N
    if not first:
        vals = {}
        for i, v in enumerate(A):
            vals.setdefault(v, []).append(i)
        for v, idxs in vals.items():

            for i in range(0, len(idxs), 2):
                partner[idxs[i]] = idxs[i+1]
                partner[idxs[i+1]] = idxs[i]

    while True:
        if first:
            xor_sum = 0
            for v in A:
                xor_sum ^= v
            for i, v in enumerate(A):
                t = v ^ xor_sum
                if t < v:
                    x = v - t
                    break
            if x > K:
                for i, v in enumerate(A):
                    if v > 0:
                        x = 1
                        break
            A[i] -= x
            K = x
            sys.stdout.write(f"{i+1} {x}\n")
            sys.stdout.flush()
            ret = int(sys.stdin.readline().strip())
            if ret != 0:
                return
            line = sys.stdin.readline().strip().split()
            j = int(line[0]) - 1
            xj = int(line[1])
            A[j] -= xj
            K = xj
            ret = int(sys.stdin.readline().strip())
            if ret != 0:
                return
        else:
            line = sys.stdin.readline().strip().split()
            i = int(line[0]) - 1
            x = int(line[1])
            A[i] -= x
            K = x
            ret = int(sys.stdin.readline().strip())
            if ret != 0:
                return

            j = partner[i]
            A[j] -= x
            K = x
            sys.stdout.write(f"{j+1} {x}\n")
            sys.stdout.flush()
            ret = int(sys.stdin.readline().strip())
            if ret != 0:
                return

if __name__ == "__main__":
    main()
0