def solve():
l, k, u, m = map(int, input().split())
n = int(input())
obstacles = {}
for _ in range(n):
coord, health = map(int, input().split())
obstacles[coord] = health
d = int(input())
fog_coords = set()
for _ in range(d):
fog_coords.add(int(input()))
position = 0
total_distance = 0
while position < l:
total_distance += m
num_shots = u
for i in range(1, k + 1):
target_position = position + i
if target_position in obstacles:
if num_shots > 0 :
obstacles[target_position] -= 1
num_shots -= 1
if obstacles[target_position] <= 0:
del obstacles[target_position]
next_position = position + m
if next_position < l:
for i in range(position+1, next_position+1):
if i in obstacles:
break
else:
position = next_position
continue
for fog_coord in fog_coords:
if position < fog_coord <= position + m:
for i in range(1, k+1):
target_position = position + i
if target_position in obstacles:
obstacles[target_position] = max(0, obstacles[target_position] -2)
if obstacles[target_position] <= 0:
del obstacles[target_position]
break
position = next_position
if next_position in obstacles and next_position != l:
if len(obstacles.keys()) > 0 and next_position != l:
break
print(min(total_distance, l))
solve()
Помогите Коле определить расстояние, которое пройдёт его персонаж по заданным входным параметрам.
Входные данные:
На вход на первой строке подаётся целое число L (1 <= L <= 100000) – длина оси, по которой будет передвигаться персонаж, целое число K (1 <= K <= L), целое число U (1 <= U <= 1000), целое число М (1<=М<=1000).
На второй строке подаётся целое число N (1 <= N <= 1000) – количество разрушаемых препятствий на оси.
Далее на N строках подаются целые координаты препятствий (целое число от 1 до L-1) и их ОЗ через пробел (например, 5 2, на координате 5 стоит препятствие с 2 ОЗ).
После на новой строке подаётся целое число D (1 <= D <= 1000) – количество туманных областей на оси.
Далее на D-строках подаются целые координаты тумана на оси (одно число от 1 до L-1).
Выходные данные:
На выходе требуется вывести одно целое число – расстояние, которое пройдёт персонаж.
Примечания.
1) Если персонаж проходит весь маршрут, то вывести L.
2) Когда персонаж не доходит до конца (упирается в препятствие, которое не успел уничтожить), то считается, что он прошёл ровно такое расстояние, на координате которой стояло препятствие (если персонаж закончил игру на препятствии по координате 9, то считается, что он прошёл 9 клеток).
3) Если при стрельбе пуля пролетает больше чем через одну туманную область, то считаем, что на её урон влияет только первая.
4) Персонаж каждую секунду останавливается и производит U выстрелов, если выстрел уничтожает цель и остались ещё выстрелы, которые могут долететь до следующего препятствия, то ему наносится урон.
Пример:
Входные данные
15 3 1 1
3
3 3
5 2
9 6
Выходные данные
1
4
5
Рассмотрим пример
Персонаж начинает с координаты 0, на расстоянии 3 есть препятствие с 3 ОЗ.
Персонаж сразу же может начать стрелять, так как расстояние K=3.
Придя на координату 3 – это препятствие будет уничтожено.
Далее есть препятствие по координате 5, но оно за туманом по координате 4, поэтому урон при стрельбе через него понижается нацело на 2 (1 единица урона становится равной 0). Прежний урон (1 ОЗ за выстрел) вернётся только после прохождения тумана (на координате 4). Но уничтожить препятствие он не успеет, так как требуется произвести 2 выстрела, а стреляет он раз в секунду, поэтому, игра закончится на расстоянии 5.