結果
| 問題 |
No.2165 Let's Play Nim!
|
| コンテスト | |
| ユーザー |
titia
|
| 提出日時 | 2022-12-16 02:22:54 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 325 ms / 2,000 ms |
| コード長 | 1,201 bytes |
| コンパイル時間 | 359 ms |
| コンパイル使用メモリ | 82,028 KB |
| 実行使用メモリ | 95,176 KB |
| 平均クエリ数 | 911.51 |
| 最終ジャッジ日時 | 2024-11-15 06:20:00 |
| 合計ジャッジ時間 | 19,487 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 38 |
ソースコード
n=int(input())
A=list(map(int,input().split()))
XOR=0
for a in A:
XOR^=a
if XOR==0:
print(0,flush=True)
i,k=map(int,input().split())
XOR^=A[i-1]
A[i-1]-=k
XOR^=A[i-1]
ret=int(input())
if ret==-1:
exit()
else:
print(1,flush=True)
SET=[set() for i in range(32)]
for i in range(n):
for j in range(32):
if A[i] & (1<<j)!= 0:
SET[j].add(i)
while True:
for j in range(31,-1,-1):
if XOR & (1<<j) != 0:
ki=j
break
for i in SET[j]:
nec=A[i]^XOR
print(i+1,A[i]-nec,flush=True)
A[i]=nec
XOR=0
ret=int(input())
if ret==-1:
exit()
for j in range(32):
if i in SET[j]:
SET[j].remove(i)
for j in range(32):
if nec & (1<<j) != 0:
SET[j].add(i)
break
i,k=map(int,input().split())
XOR^=A[i-1]
A[i-1]-=k
XOR^=A[i-1]
ret=int(input())
if ret==-1:
exit()
for j in range(32):
if i-1 in SET[j]:
SET[j].remove(i-1)
for j in range(32):
if A[i-1] & (1<<j) != 0:
SET[j].add(i-1)
titia