結果
| 問題 |
No.3258 Xor Division Game
|
| コンテスト | |
| ユーザー |
ゼット
|
| 提出日時 | 2025-09-05 23:23:31 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,425 bytes |
| コンパイル時間 | 470 ms |
| コンパイル使用メモリ | 82,300 KB |
| 実行使用メモリ | 193,392 KB |
| 最終ジャッジ日時 | 2025-09-05 23:23:37 |
| 合計ジャッジ時間 | 5,341 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | TLE * 1 -- * 66 |
ソースコード
N=int(input())
A=list(map(int,input().split()))
from random import randint
z=randint(1,10**8)
B=set()
for i in range(N):
B.add(A[i]^z)
B=list(B)
T={}
for i in range(len(B)):
T[B[i]]=i
for i in range(N):
A[i]=T[A[i]^z]
from collections import deque
S=deque()
v=[0]*(N+1)
S.append((0,N-1))
result=0
G=[[] for i in range(N+1)]
for i in range(N):
G[A[i]].append(i)
from bisect import bisect_left,bisect_right
used=[False]*N
while S:
if sum(v)>0:
p=[0]
print(p[1])
l,r=S.pop()
if l>r:
continue
for i in range(l,r+1):
v[A[i]]+=1
h=[]
for i in range(l,r+1):
if v[A[i]]==1:
h.append(i)
while h:
pos=h.pop()
used[pos]=True
if pos<l or pos>r:
continue
m0=pos-l
m1=r-pos
result+=1
if m0>=m1:
S.append((pos+1,r))
for j in range(pos,r+1):
v[A[j]]-=1
if v[A[j]]==1:
f=bisect_left(G[A[j]],l)
e=G[A[j]][f]
if l<=e<pos:
h.append(e)
r=pos-1
else:
S.append((l,pos-1))
for j in range(l,pos+1):
v[A[j]]-=1
if v[A[j]]==1:
f=bisect_left(G[A[j]],pos+1)
if f<len(G[A[j]]):
e=G[A[j]][f]
if pos+1<=e<r:
h.append(e)
l=pos+1
for i in range(l,r+1):
v[A[i]]=0
result=0
for i in range(N):
if used[i]==True:
result+=1
if result%2==0:
print('Bob')
else:
print('Alice')
ゼット