結果
| 問題 |
No.2890 Chiffon
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-07-05 14:35:03 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 204 ms / 2,000 ms |
| コード長 | 708 bytes |
| コンパイル時間 | 405 ms |
| コンパイル使用メモリ | 82,176 KB |
| 実行使用メモリ | 155,020 KB |
| 最終ジャッジ日時 | 2024-09-26 14:32:41 |
| 合計ジャッジ時間 | 6,590 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 53 |
ソースコード
n,k = map(int, input().split())
a = list(map(int, input().split()))
a.append(a[0] + 2*n)
p = 0
mn = 2*n
for i in range(k):
if mn > a[i+1] - a[i]:
p = i
mn = a[i+1] - a[i]
an = [0] * (k)
for i in range(k):
an[i] = (a[(p+i) % k] - a[p]) % (2*n)
an.append(2*n)
ans = 0
for s in range(1, an[1], 2):
ok = 0
ng = n
while ng - ok > 1:
mid = (ok + ng) // 2
def check():
x = 2*mid
si = s
for i in range(k-1):
if si + x > an[i+2]: return False
si = max(si+x, an[i+1]+1)
return si + x <= s + 2*n
if check(): ok = mid
else: ng = mid
ans = max(ans, ok*2)
print(ans)