結果
問題 |
No.3075 Mex Recurrence Formula
|
ユーザー |
![]() |
提出日時 | 2025-03-28 21:11:32 |
言語 | PyPy3 (7.3.15) |
結果 |
RE
|
実行時間 | - |
コード長 | 1,136 bytes |
コンパイル時間 | 341 ms |
コンパイル使用メモリ | 82,640 KB |
実行使用メモリ | 146,772 KB |
最終ジャッジ日時 | 2025-03-28 21:11:58 |
合計ジャッジ時間 | 13,388 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 36 RE * 10 |
ソースコード
class segtree: def __init__(self,n): self.size=1 while self.size<n: self.size*=2 self.dat=[10**10]*(self.size*2) def update(self,x,a): x+=self.size self.dat[x]=a while x>1: x//=2 self.dat[x]=min(self.dat[2*x],self.dat[2*x+1]) def querry(self,u,v): u+=self.size v+=self.size score=10**10 while u<v: if u&1: score=min(score,self.dat[u]) u+=1 if v&1: v-=1 score=min(score,self.dat[v]) u//=2 v//=2 return score N,K=map(int,input().split()) A=list(map(int,input().split())) result=[0]*(3*N+3) B=set() for i in range(N): result[i]=A[i] B.add(A[i]) for x in range(10**7): if not x in B: result[N]=x break if K<=N+1: print(result[K-1]) exit() T={} Z=segtree(N+5) for x in range(N+4): Z.update(x,x) for i in range(N+1): x=result[i] if not x in T: T[x]=1 else: T[x]+=1 if x<N+3: Z.update(x,10**10) for i in range(N+1,2*N+2): y=result[i-(N+1)] T[y]-=1 if T[y]==0: Z.update(y,y) x=Z.querry(0,N+5) result[i]=x Z.update(x,10**10) pos=(K-1)%(N+1) print(result[pos+N+1])