import sys
input = sys.stdin.read()
# input = '''
# 4 2
# 7 3 0 2
# '''.strip()
_, k, *start_path = [int(t) for t in input.split()]
oks = [0] * len(start_path)
path = [x for x in start_path]
def syp(l: list[int]):
for i in range(len(l)):
if i > 0 and l[i-1] > l[i] + k:
l[i] = l[i-1] - k
syp(path)
path = list(reversed(path))
syp(path)
def check_ok(path: list[int]):
assert path
prev = path[0]
for x in path:
assert abs(prev - x) <= k
prev = x
check_ok(path)
ret = sum(path) - sum(start_path)
print(ret)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | import sys input = sys.stdin.read() # input = ''' # 4 2 # 7 3 0 2 # '''.strip() _, k, *start_path = [int(t) for t in input.split()] oks = [0] * len(start_path) path = [x for x in start_path] def syp(l: list[int]): for i in range(len(l)): if i > 0 and l[i-1] > l[i] + k: l[i] = l[i-1] - k syp(path) path = list(reversed(path)) syp(path) def check_ok(path: list[int]): assert path prev = path[0] for x in path: assert abs(prev - x) <= k prev = x check_ok(path) ret = sum(path) - sum(start_path) print(ret) |
English