結果
問題 | No.2890 Chiffon |
ユーザー |
![]() |
提出日時 | 2024-09-13 23:23:23 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 966 ms / 2,000 ms |
コード長 | 1,002 bytes |
コンパイル時間 | 165 ms |
コンパイル使用メモリ | 82,684 KB |
実行使用メモリ | 272,944 KB |
最終ジャッジ日時 | 2024-09-26 14:42:05 |
合計ジャッジ時間 | 27,898 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 53 |
ソースコード
from bisect import *N,K = map(int,input().split())A = list(map(int,input().split()))m = 2 * N - 1 - A[-1]for i in range(K):A[i] += mberry = [0] * (4 * N)R = [0] * (4 * N)for i in range(K):a = A[i]berry[a] = 1berry[a + 2 * N] = 1R[a] = 1R[a + 2 * N] = 1A.append(a + 2 * N)for i in range(4 * N - 1):R[i + 1] += R[i]l = 1r = N + 1d = [-1 for u in range(2 * N)]for u in range(2 * N):d[u] = A[bisect_left(A,u)]while r - l > 1:m = (l + r) // 2dp = [0 for u in range(4 * N)]dp[0] = 1f = 0for u in range(2 * N):if berry[u]:f = 1continueif f == 0:dp[u] = u + 1else:if berry[u - 1] == 0:dp[u] = max(dp[u],dp[u - 1])v = max(u + m,d[u])if berry[v]:v += 1if v % 2:v += 1if R[v] - R[u] == 1:dp[v] = max(dp[v],dp[u])f = 0for u in range(2 * N):if berry[u]:breakif dp[u + 2 * N] >= u + 1:f = 1if f:l = melse:r = mprint(l)