結果
問題 |
No.3166 [Cherry 7th Tune *] 桜の守人
|
ユーザー |
![]() |
提出日時 | 2025-05-30 22:14:02 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 688 ms / 2,000 ms |
コード長 | 748 bytes |
コンパイル時間 | 511 ms |
コンパイル使用メモリ | 82,188 KB |
実行使用メモリ | 170,580 KB |
最終ジャッジ日時 | 2025-05-30 22:14:19 |
合計ジャッジ時間 | 15,545 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 26 |
ソースコード
T=int(input()) for _ in range(T): n,L,K=map(int,input().split()) xs=list(map(int,input().split())) if L==1: print(1) continue ok=(L//2)+1 ng=0 while ok-ng>1: m=(ok+ng)//2 p=[] z=[0,L] for x in xs: l=x-m r=x+m-1 if 0<=l<=r<L: p+=[(l,r+1)] z+=[l,r+1] elif 0<=l<L<=r: p+=[(l,L-1+1),(0,(r-L+1)-1+1)] z+=[l,L-1+1,0,(r-L+1)-1+1] else: p+=[(L-1-(0-l)+1,L-1+1),(0,r+1)] z+=[L-1-(0-l)+1,L-1+1,0,r+1] z=sorted(set(z)) d={v:i for i,v in enumerate(z)} q=[0]*len(z) for l,r in p: q[d[l]]+=1 q[d[r]]-=1 for i in range(1,len(q)): q[i]+=q[i-1] if min(q[:d[L]])>=K: ok=m else: ng=m print(ok)