Предмет: Информатика, автор: dimadima123098

ДАМ 100 БАЛЛОВ
Задача 7: Ремонт забора


Забор состоит из N одинаковых вертикальных досок. Некоторые из досок сгнили и нуждаются в замене, для каждой доски известно, нужно ли её заменить. Для ремонта забора можно использовать продающиеся в магазине щиты, которые бывают L разных видов: шириной в 1 доску, в 2 доски, ..., в L досок. Щит нельзя разрезать на части, то есть одним щитом можно заменить не более любых L подряд идущих досок. При этом можно менять не только сгнившие доски, но и хорошие.


Оказалось, что все щиты стоят одинаково, независимо от размера щита. Определите, какое наименьшее число щитов необходимо приобрести, чтобы починить весь забор.

Входные данные


Первая строка входных данных содержит целое число L (L > 0) – максимальный размер щита. Во второй строке входных данных записано целое число N (N > 0) – количество досок в заборе. Следующие N строк содержат по одному числу, равному 0 или 1. Число 1 обозначает, что соответствующая доска в заборе нуждается в замене, число 0 – что доска может быть сохранена.

Выходные данные


Программа должна вывести одно целое число – минимальное число щитов, которое необходимо приобрести для ремонта всего забора.

Система оценивания


Решение, правильно работающее только для случаев, когда числа L и N не превосходят 1000, будет оцениваться в 6 баллов.


В 10 баллов будет оцениваться решение, правильно работающее, когда числа L и N не превосходят 105.

Пример

Ввод Вывод Пояснение


3

8

0

0

1

0

1

0

1

0




2




Максимальная ширина одного щита равна 3. Забор состоит из 8 досок, нужно заменить доски с номерами 3, 5 и 7. Для этого достаточно двух щитов, например, одним щитом меняем доски с номерами 3, 4, 5, а другим щитом меняем доску с номером 7.

Ответы

Автор ответа: artv15052006
6

Ответ:

Решил на python3

MaxLenRep = int(input())

Len = int(input())

zabor = []

rem = 0

tl = 0

for i in range(Len):

   zabor.append(int(input()))

for i in zabor:

   if i == 1 and tl == 0:

       rem += 1

       tl = MaxLenRep

   if tl > 0:

       tl -= 1

print(rem)


freenaa: что такое append???
alexporubaev: 0 баллов...
LiSa20170505: Не работает
freenaa: у меня работает)
freenaa: просто надо пробелы ставить…\
izhlotos: при проверке решения вышло неполное решение, хоть и в путоне ошибки не вышло
Автор ответа: freenaa
8

Ответ:

max = int(input())

Len = int(input())

zabor = []

rem = 0

tl = 0

for i in range(Len):

   zabor.append(int(input()))

for i in zabor:

   if i == 1 and tl == 0:

       rem += 1

       tl = max

   if tl > 0:

       tl -= 1

print(rem)  

Объяснение:

Соблюдай пробелы!!!!

5 звезд и Спасибо))


ArtProGame: Топ решение) ПРОВЕРЯЙТЕ ЧЕРЕЗ https://www.onlinegdb.com/online_python_compiler
izhlotos: при проверке решения вышло неполное решение, хоть и в путоне ошибки не вышло
Похожие вопросы
Предмет: Русский язык, автор: kamala55
Предмет: Русский язык, автор: kostyautyupin
Предмет: Математика, автор: Deadpool008