Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

АйТи. Олимпиада. Код. Python.

Тёмный Король Ученик (177), на голосовании 1 неделю назад
Помогите с задачей. Нужно написать код. N° 2
Фонари
Ограничение по времени: 1 секунда
Ограничение по памяти: 256 мегабайт
Вдоль прямой улицы на равном расстоянии располагаются N домов. Будем считать расстояние между домами за единицу длины.
Около каждого дома можно поставить один фонарь. Всего имеется А фонарей, которые могут освещать дома на расстоянии X (включительно), и В фонарей, которые могут освещать дома на расстоянии Y (включительно). В частности, при X = 0 или Y = 0 такой фонарь освещает только тот дом, у которого он установлен.
Вам необходимо расставить минимальное число фонарей так, чтобы все дома были освещены. Один дом может быть освещён несколькими фонарями. Освещать участки улицы
между домами необязательно.
Формат входных данных
Первая строка входных данных содержит целое число N (1 < N < 105). Следующие четыре строки содержат целые неотрицательные числа А, Х, В и У соответственно, которые не превосходят 105.
Голосование за лучший ответ
R.H. Мастер (1202) 1 месяц назад
 def min_lanterns_needed(N, A, X, B, Y): 
# Если радиусы освещения X или Y равны 0, то эти фонари освещают только один дом
if X == 0:
X = 1
if Y == 0:
Y = 1

# Массив для отслеживания, освещён ли каждый дом
street = [False] * N

# Функция для установки фонарей
def place_lanterns(start, radius, count):
placed = 0
i = start
while i < N and placed < count:
if not street[i]:
# Покрываем все дома, которые находятся в радиусе освещения
for j in range(max(0, i - radius), min(N, i + radius + 1)):
street[j] = True
placed += 1
i += (2 * radius + 1)
return placed

# Сначала расставляем фонари типа с большим радиусом
if X > Y:
A = place_lanterns(0, X, A)
B = place_lanterns(0, Y, B)
else:
B = place_lanterns(0, Y, B)
A = place_lanterns(0, X, A)

# Проверяем, покрыты ли все дома
if all(street):
return A + B
else:
return -1 # Если не удалось покрыть все дома

# Пример использования
N = int(input())
A = int(input())
X = int(input())
B = int(input())
Y = int(input())

result = min_lanterns_needed(N, A, X, B, Y)
print(result)
Тёмный КорольУченик (177) 1 месяц назад
Нейросетью сделал?
R.H. Мастер (1202) Тёмный Король, конечно
xqwii0x xУченик (90) 1 месяц назад
неа
popka34 netУченик (113) 1 месяц назад
zyiня переделывай
Похожие вопросы