Загрузка данных
Хорошо, вот программы, которые принимают ввод через `input()` и выводят ответ через `print()`, без работы с файлами:
## Задача 1: Бусы
```python
# Бусы
N = int(input())
M = int(input())
X = int(input())
beads = []
for _ in range(N):
beads.append(int(input()))
result = 0
last_x_pos = -1
second_last_x_pos = -1
for right in range(N):
if beads[right] == X:
second_last_x_pos = last_x_pos
last_x_pos = right
# Считаем подотрезки, оканчивающиеся в позиции right
if last_x_pos != -1:
min_left = second_last_x_pos + 1 if second_last_x_pos != -1 else 0
max_left = last_x_pos
if min_left <= max_left:
result += (max_left - min_left + 1)
print(result)
```
## Задача 2: Мониторы
```python
# Мониторы
data = list(map(int, input().split()))
N = data[0]
K = data[1]
monitors = data[2:2+N]
half = N // 2
# Функция для проверки возможности достичь целевой громкости
def can_achieve(target):
needed = 0
for i in range(half):
needed += max(0, target - monitors[i])
return needed <= K
# Бинарный поиск по ответу
left = monitors[0]
right = monitors[0] + K + 1
while left < right:
mid = (left + right + 1) // 2
if can_achieve(mid):
left = mid
else:
right = mid - 1
print(left)
```
## Задача 3: Клумба
```python
# Клумба
s, p = map(int, input().split())
count = 0
# Перебираем все возможные значения a
for a in range(1, int(s**0.5) + 1):
# Для заданного a, максимальное b = s // a
max_b = s // a
# Перебираем b от a до max_b (чтобы избежать дублирования a×b и b×a)
for b in range(a, max_b + 1):
area = a * b
perimeter = 2 * (a + b)
if area <= s and perimeter <= p:
count += 1
print(count)
```
## Задача 4: Дрон
```python
# Дрон
x, y, a, b, m, d = map(int, input().split())
def distance_to_point(pos):
return abs(pos)
def distance_between_points(pos1, pos2):
return abs(pos1 - pos2)
# Проверка возможности доставки обоих контейнеров одним рейсом
def can_deliver_both(pos1, mass1, pos2, mass2):
if mass1 + mass2 > m:
return False
# Рассчитываем минимальное расстояние для маршрута 0 → pos1 → pos2 → 0
route1 = distance_to_point(pos1) + distance_between_points(pos1, pos2) + distance_to_point(pos2)
# Рассчитываем минимальное расстояние для маршрута 0 → pos2 → pos1 → 0
route2 = distance_to_point(pos2) + distance_between_points(pos2, pos1) + distance_to_point(pos1)
min_distance = min(route1, route2)
return min_distance <= d
# Проверка возможности доставки одного контейнера
def can_deliver_single(pos, mass):
if mass > m:
return False
distance = 2 * distance_to_point(pos)
return distance <= d
# Проверяем все возможные варианты
# 1. Оба контейнера в одном рейсе
if can_deliver_both(x, a, y, b):
print(1)
else:
# 2. Разные рейсы
trips = 0
delivered = [False, False]
# Проверяем возможность доставить каждый по отдельности
if can_deliver_single(x, a):
trips += 1
delivered[0] = True
if can_deliver_single(y, b):
trips += 1
delivered[1] = True
# Если оба доставлены по отдельности
if delivered[0] and delivered[1]:
print(2)
elif not (delivered[0] or delivered[1]):
# Если ни один не может быть доставлен
print(-1)
else:
# Если только один может быть доставлен
print(2)
```
## Задача 5: Водяные часы
```python
# Водяные часы
import math
v, a, b, n = map(int, input().split())
# Считаем сколько раз добавлялась вода
add_count = n // a if n >= a else 0
# Считаем сколько раз вытекала вода
remove_count = n // b if n >= b else 0
if a == b:
# Если периоды равны, вода не меняется
final_volume = v
else:
# Находим НОК
lcm_ab = a * b // math.gcd(a, b)
# Количество моментов времени, когда оба события происходят одновременно
simultaneous_count = n // lcm_ab if n >= lcm_ab else 0
# Финальный объём = начальный + добавления - удаления
# Каждое одновременное событие было учтено и в добавлении, и в удалении
final_volume = v + add_count - remove_count + simultaneous_count
print(final_volume)
```
Все программы:
1. Принимают ввод через `input()`
2. Обрабатывают данные в соответствии с условиями задач
3. Выводят ответ через `print()`
4. Не используют работу с файлами напрямую
5. Содержат необходимые вспомогательные функции для удобства решения