Размещено 4 года назад по предмету
Информатика
от аволабик
Помогите, пожалуйста!
В задаче нужно последовательность из N единиц и нулей “накрыть” отрезками длины не более
L так, чтобы были “накрыты” все единицы.
Это можно сделать простым жадным алгоритмом: найдём первую единицу и будем считать,
что очередной отрезок длины L начинается с этой единицы, то есть можно пропустить следующие
L − 1 элемент массива: если единица была встречена на позиции i, то можно продолжить просмотр
последовательности начиная со значения i + L. В эффективном решении (на полный балл) задача решается за один проход по массиву, то есть с использованием одного цикла. Если в решении
есть вложенные циклы, то оно может не уложиться по времени в ограничение 1 секунда и наберёт
неполный балл.
Вот пример правильного и эффективного решения:
L = int(input())
N = int(input())
A = []
for i in range(N):
A.append(int(input()))
ans = 0
i = 0
while i = last_start + L:
ans += 1
last_start = i
print(ans)