結果
問題 | No.2890 Chiffon |
ユーザー |
![]() |
提出日時 | 2024-09-13 22:46:52 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 169 ms / 2,000 ms |
コード長 | 727 bytes |
コンパイル時間 | 166 ms |
コンパイル使用メモリ | 82,308 KB |
実行使用メモリ | 199,152 KB |
最終ジャッジ日時 | 2024-09-26 14:41:31 |
合計ジャッジ時間 | 5,295 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 53 |
ソースコード
def Bisect_Int(ok,ng,is_ok): while abs(ok-ng)>1: mid=(ok+ng)//2 if is_ok(mid): ok=mid else: ng=mid return ok N,K=map(int,input().split()) A=list(map(int,input().split())) D=[b-a for a,b in zip(A,A[1:])] D.append(2*N-sum(D)) mi=min(D) i=D.index(mi) D=D[i:]+D[:i] for i in range(K): D[i]//=2 C=[0]+D for i in range(1,K+1): C[i]+=C[i-1] def is_ok(d): for s in range(C[1]): cur=s for k in range(1,K): cur+=d if cur<C[k]: cur=C[k] elif C[k+1]<=cur: return False cur+=d if cur<=s+N: return True return False ans=Bisect_Int(0,N+1,is_ok)*2 print(ans)