結果

問題 No.3513 Greedy Yokan Party
コンテスト
ユーザー sig
提出日時 2026-04-24 23:16:10
言語 PyPy3
(7.3.17)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
WA  
実行時間 -
コード長 1,127 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 2,129 ms
コンパイル使用メモリ 85,120 KB
実行使用メモリ 130,048 KB
最終ジャッジ日時 2026-04-24 23:17:09
合計ジャッジ時間 4,815 ms
ジャッジサーバーID
(参考情報)
judge1_1 / judge4_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 10 WA * 16
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#t = int(input())
t = 1
for _ in range(t):
  n,l = map(int, input().split())
  k = int(input())
  a = [0] + list(map(int, input().split())) + [l]
  from bisect import bisect_left
  cur = bisect_left(a,l/2)
  if l/2 - a[cur-1] < a[cur]-l/2:
    cur -= 1
  li = []
  r = []
  for i in range(cur+1):
    li.append(a[i])
  for i in range(cur,n+2):
    r.append(a[i]-a[cur])

  ll,lr,rl,rr = 0,len(li)-1,0,len(r)-1
  for i in range(k-1):
    if ll != lr:
      m1 = min(li[lr]-li[ll+1],r[rr]-r[rl])
      m2 = min(li[lr-1]-li[ll],r[rr]-r[rl])
      if li[lr]-li[ll+1] > li[lr-1]-li[ll]:
        m2 = -10**18
      else:
        m1 = -10**18
    else:
      m1 = -10**18
      m2 = -10**18
    if rl != rr:
      m3 = min(li[lr]-li[ll],r[rr]-r[rl+1])
      m4 = min(li[lr]-li[ll],r[rr-1]-r[rl])
      if r[rr]-r[rl+1] > r[rr-1]-r[rl]:
        m4 = -10**18
      else:
        m3 = -10**18
    else:
      m3 = -10**18
      m4 = -10**18
    ma = max(m1,m2,m3,m4)
    if ma == m1:
      ll += 1
    elif ma == m2:
      lr -= 1
    elif ma == m3:
      rl += 1
    else:
      rr -= 1
  ma = min(li[lr]-li[ll],r[rr]-r[rl])
  print(ma)
0