結果
| 問題 |
No.3120 Lower Nim
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 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 |
ソースコード
#!/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()