結果
問題 | No.2165 Let's Play Nim! |
ユーザー |
![]() |
提出日時 | 2023-04-16 10:27:33 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,453 bytes |
コンパイル時間 | 216 ms |
コンパイル使用メモリ | 82,304 KB |
実行使用メモリ | 297,196 KB |
平均クエリ数 | 403.49 |
最終ジャッジ日時 | 2024-10-11 21:09:18 |
合計ジャッジ時間 | 12,005 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 17 TLE * 1 -- * 20 |
ソースコード
def rec():ret = int(input())if ret == -1:exit()def inp():global gi, k = map(int, input().split())i -= 1g ^= A[i]remX(A[i], i)A[i] -= kif A[i] == 0:remain.remove(i)setX(A[i], i)g ^= A[i]def remX(x, i):j = 0while x > 0:if x & 1:X[j].remove(i)x >>= 1j += 1def setX(x, i):j = 0while x > 0:if x & 1:X[j].add(i)x >>= 1j += 1def find(x):j = 0tmp = set(range(n))while x > 0:if x & 1:tmp &= X[j]j += 1x >>= 1if tmp:return next(iter(tmp))else:return -1X = [set() for _ in range(14)]n = int(input())A = list(map(int, input().split()))remain = set(range(n))g = 0for i, a in enumerate(A):g ^= asetX(a, i)if g == 0:print(0)else:print(1)while 1:#print(A,g)if g != 0:i = find(g)if i == -1:for j in remain:gt = A[j] ^ gif gt < A[j]:i = jbreakremX(A[i], i)to = A[i] ^ gsubt = A[i] - toA[i] = toif A[i] == 0:remain.remove(i)setX(to, i)g = 0print(i + 1, subt)rec()#if sum(A) == 0:# print("finish")# exit()#print(A,g)inp()rec()