結果

問題 No.3761 Moonlit Battle
コンテスト
ユーザー sig
提出日時 2026-10-09 22:53:56
言語 PyPy3
(7.3.23 + ACL)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
WA  
実行時間 -
コード長 812 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 65 ms
コンパイル使用メモリ 81,820 KB
実行使用メモリ 165,068 KB
最終ジャッジ日時 2026-10-09 22:54:12
合計ジャッジ時間 9,264 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge1_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 28 WA * 19
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

t = 1
#t = int(input())
for _ in range(t):
  n,d = map(int, input().split())
  lis = [list(map(int, input().split())) for _ in range(n)]
  su = 0
  for i in lis:
    su += i[0]
  lis.sort(reverse = True)
  cur = 0
  while su > d:
    bef = lis.pop()
    su -= bef[0]
    cur = bef[1]
  while lis and lis[-1][1] == cur:
    bef = lis.pop()
    su -= bef[0]
    
  lis2 = []
  for i,j in lis:
    lis2.append([(j-cur)%d,i])
  lis2.sort()
  ii = 0
  nn = len(lis2)
  mi,tim = 0,0
  su = 0
  bef = 0
  while ii < nn:
    a,b = lis2[ii]
    su += a-bef
    bef = a
    su -= b
    ii += 1
    while ii < nn and lis2[ii][0] == a:
      su -= lis2[ii][1]
      ii += 1
    if mi > su:
      mi = su
      tim = bef
  ans = cur+tim
  for i,j in lis:
    res = max(0,j-cur-tim)
    ans += i * ((res+d-1)//d )
  print(ans)
0