結果

問題 No.3120 Lower Nim
ユーザー keigo kuwata
提出日時 2025-04-24 14:53:22
言語 Python3
(3.13.1 + numpy 2.2.1 + scipy 1.14.1)
結果
RE  
実行時間 -
コード長 1,512 bytes
コンパイル時間 377 ms
コンパイル使用メモリ 12,132 KB
実行使用メモリ 28,800 KB
平均クエリ数 1.00
最終ジャッジ日時 2025-04-24 14:53:30
合計ジャッジ時間 7,213 ms
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample RE * 1
other RE * 43
権限があれば一括ダウンロードができます

ソースコード

diff #

#!/usr/bin/env python3
import sys

def input():
    return sys.stdin.readline()

def main():
    data = input().split()
    N = int(data[0])
    A = list(map(int, data[1:]))
    total = sum(A)

    # 初手の選択: 総和が奇数なら先攻、偶数なら後攻
    if total % 2 == 1:
        print("First", flush=True)
        my_turn = True
    else:
        print("Second", flush=True)
        my_turn = False

    # ゲームループ
    while True:
        if my_turn:
            # 自分の手番: いずれかの山から1を取る
            # A[i] >= 1 を満たす最初のインデックスを選択
            for idx, v in enumerate(A):
                if v > 0:
                    i = idx
                    break
            x = 1
            A[i] -= x
            print(i + 1, x, flush=True)
            # judgeからretを読み込む
            ret = int(input())
            if ret == 1 or ret == -1:
                return
            # 次は相手の手番
            my_turn = False
        else:
            # ジャッジの手番: i, x を読み込む
            parts = input().split()
            if not parts:
                return
            j_i = int(parts[0]) - 1
            j_x = int(parts[1])
            # ret を読み込む
            ret = int(input())
            if ret == -1:
                return
            # 状態更新
            A[j_i] -= j_x
            # 次は自分の手番
            my_turn = True

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