В доме у Виктории Ю. внезапно поломалась вся техника, из-за чего Виктория начала плакать. Когда фиксики об это узнали, они взяли помогаторы и примчались спасать Викторию. Виктория начнет радоваться, как только будет починена вся техника в ее доме. Пока фиксики работают, они тратят по одному проценту своего запаса сил в минуту. Когда запас сил становится равен , фиксики уходят на зарядку, пока не наберут
(на это требуется
минуты), потом они продолжают работать. Фиксики стараются починить сначала те приборы, которые требуют меньше всего времени. После починки самого последнего прибора фиксики заряжаются, чтобы улететь к ДимДимычу.
Во входном файле вы получаете число — количество приборов в доме у Виктории, затем
чисел — время починки каждого отдельного прибора. Определите какое количество времени в минутах понадобится фиксикам, чтобы Виктория заулыбалась, если начальный заряд фиксиков
Решение №1
n = int(input())
counter = 0
ener = 70
a = []
for i in range(n):
a.append(int(input()))
a.sort()
i = 0
while i != n:
if (ener - a[i]) > 20: # Без подзарядки
counter += a[i]
ener -= a[i]
i += 1
elif (ener - a[i]) == 20: # Одна подзарядочка и идем дальше
counter += a[i] + 2
ener = 80
i += 1
else: # Одна или несколько подзарядок в одном пункте
counter += (ener - 20) + 2
a[i] -= (ener - 20)
ener = 80
print(counter + 2) # В конце заряжается по условию
Решение №2
n = int(input())
a = []
for i in range(n):
a.append(int(input()))
a.sort()
ener = 70
time = 0
i = 0
flag = True
while i != n:
if a[i] - ener + 20 >= 0:
if i == n - 1 and a[i] - ener + 20 == 0:
flag = False
time += min(ener - 20, a[i]) + 2
a[i] = max(a[i] - ener + 20, 0)
ener = 80
else:
time += a[i]
ener -= a[i]
a[i] = 0
if a[i] == 0:
i += 1
if flag:
time += 2
print(time)