Паскаль Задача 3. Ремонт забора Имя входного файла: стандартный ввод
Имя выходного файла: стандартный вывод
Ограничение по времени: 1 секунда
Ограничение по памяти: 512 мегабайт
Забор состоит из N одинаковых вертикальных досок. Некоторые из досок сгнили и нуждаются в
замене, для каждой доски известно, нужно ли её заменить. Для ремонта забора можно использовать
продающиеся в магазине щиты, которые бывают L разных видов: шириной в 1 доску, в 2 доски, ...,
в L досок. Щит нельзя разрезать на части, то есть одним щитом можно заменить не более любых
L подряд идущих досок. При этом можно менять не только сгнившие доски, но и хорошие.
Оказалось, что все щиты стоят одинаково, независимо от размера щита. Определите, какое наименьшее число щитов необходимо приобрести, чтобы починить весь забор.
Формат входных данных
Первая строка входных данных содержит целое число L (L > 0) — максимальный размер щита.
Во второй строке входных данных записано целое число N (N > 0) — количество досок в заборе.
Следующие N строк содержат по одному числу, равному 0 или 1. Число 1 обозначает, что соответствующая доска в заборе нуждается в замене, число 0 — что доска может быть сохранена.
Формат выходных данных
Программа должна вывести одно целое число — минимальное число щитов, которое необходимо
приобрести для ремонта всего забора.
Система оценивания
Решение, правильно работающее только для случаев, когда числа L и N не превосходят 1000,
будет оцениваться в
В будет оцениваться решение, правильно работающее, когда числа L и N не превосходят 105
.
Пример
стандартный ввод стандартный вывод
3
8
0
0
1
0
1
0
1
0
3
Пояснение к примеру
Максимальная ширина одного щита равна 3. Забор состоит из 8 досок, нужно заменить доски
с номерами 3, 5 и 7. Для этого достаточно двух щитов, например, одним щитом меняем доски с
номерами 3, 4, 5, а другим щитом меняем доску с номером 7
Числа можно вводить
int k,l; cout<<"->"; cin>>k>>l; if (k==l) { k=0; l=0; cout<<k<<" "<<l<<endl; } else { l=k; cout<<k<<" "<<l<<endl; }
если хочешь без ввода удали cin и присвой значения
2.
int k,l,z; cout<<"->"; cin>>k>>l>>z; if (k>0) { k*=k; cout<<k<<endl; } if (l>0) { l*=l; cout<<l<<endl; } if (z>0) { z*=z; cout<<z<<endl; } if (k<0) { cout<<k<<endl; } if (l<0) { cout<<l<<endl; } if (z<0) { cout<<z<<endl; }
a = [int(x) for x in input("Введите три целых числа:\n").split()]
max = a[0]
for i in a:
if i > max:
max = i
print("Максимальное число: {}".format(max))
<<B>>
a = [int(x) for x in input("Введите пять целых чисел:\n").split()]
max = a[0]
for i in a:
if i > max:
max = i
print("Максимальное число: {}".format(max))
<<C>>
ages = []
names = ["Антон", "Борис", "Виктор"]
for name in names:
ages.append(int(input("Возраст {}а: ".format(name
j = 0
M = []
m = max(ages)
for age in ages:
if age == m:
M.append(j)
j += 1
if len(M) == 1:
print("{} старше всех.".format(names[M[0]]))
elif len(M) == 2:
for i, v in enumerate(names):
if i not in M:
young = v
print("{} и {} старше {}а.".format(names[M[0]], names[M[1]], young))
else:
print("Все трое одного возраста.")