n, k = map(int, input().split())
a = list(map(int, input().split()))
check = [False] * (2 * n)
def belt_move(a, check):
tmp = a[-1]
tmp_ = check[-1]
for i in range(2*n-2, -1, -1):
a[i + 1] = a[i]
check[i + 1] = check[i]
a[0] = tmp
check[0] = tmp_
return a, check
def robot_move(a, check):
for i in range(2*n-2, -1, -1):
if a[i + 1] >= 1 and check[i] == True and check[i + 1] == False:
a[i + 1] -= 1
check[i] = False
check[i + 1] = True
return a, check
cnt = 0
while a.count(0) < k:
a, check = belt_move(a, check)
if check[n-1] == True:
check[n-1] = False
a, check = robot_move(a, check)
if check[n-1] == True:
check[n-1] = False
if check[0] == False and a[0] != 0:
check[0] = True
a[0] -= 1
cnt += 1
print(cnt)
구현 문제(pypy로 제출). 하라는 대로 했다. 뭔 말인지 처음에 이해가 어려웠음
더 많이 풀어봐야할듯