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