제출 #1349591

#제출 시각아이디문제언어결과실행 시간메모리
1349591akshar_7Safety (NOI18_safety)Pypy 3
66 / 100
319 ms285412 KiB
import heapq
from sys import stdin
input = stdin.readline

def main():
  input_data = stdin.read().split()
  n = int(input_data[0])
  h = int(input_data[1])
  a = [int(x) for x in input_data[2:]]
  del input_data
  l = [-a[0]]; r = [a[0]]
  ans = ls = rs = 0
  for i in range(1,n):
    x = a[i]
    ls -= h
    rs += h
    if -l[0]+ls > x:
      lx = -heapq.heappop(l)
      ans += abs(x-(lx+ls))
      heapq.heappush(l, -(x-ls))
      heapq.heappush(l, -(x-ls))
      heapq.heappush(r, lx+ls-rs)
    elif r[0]+rs < x:
      rx = heapq.heappop(r)
      ans += abs(x-(rx+rs))
      heapq.heappush(r, x-rs)
      heapq.heappush(r, x-rs)
      heapq.heappush(l, -(rx+rs-ls))
    else:
      heapq.heappush(l, -(x-ls))
      heapq.heappush(r, x-rs)
  return ans

print(main())

컴파일 시 표준 출력 (stdout) 메시지

Compiling 'safety.py'...

=======
  adding: __main__.pyc (deflated 41%)

=======
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...