Pagini recente » Monitorul de evaluare | Cod sursa (job #3285366) | Cod sursa (job #538034) | Coding Camp Alcatraz | Cod sursa (job #2907852)
with open('transport.in') as f:
with open('transport.out', 'w') as out:
n, k = [int(elem) for elem in f.readline().split()]
arr = [int(f.readline()) for _ in range(n)]
def check_volume(mid,arr,k):
i = 0
sum_arr = sum(arr)
flag = True
initial = mid
while (k>0 and i<len(arr)):
mid = mid - arr[i]
sum_arr = sum_arr - arr[i]
if mid < 0:
mid = initial
k-=1
sum_arr = sum_arr + arr[i]
i = i -1
i+=1
return sum_arr == 0
right = sum(arr)
left = 0
while (left<=right):
mid = (left + right) // 2
flag = check_volume(mid,arr,k)
if flag == True:
right = mid - 1
sol = mid
else:
left = mid + 1
with open('transport.out', 'w') as out:
out.write(str(sol) + "\n")