В городе W на одной из кольцевых автодорог с двусторонним движением расположены N многоэтажных жилых зданий для детских садов и школ (не более одного здания на каждом километре дороги). Длина кольцевой автодороги равна К км. Нулевой километр и K-й километр находятся в одной точке. Дети ежедневно получают пончики. Пончики упакованы в доставочные пакеты, каждый из которых вмещает не более V штук. Каждый доставочный пакет используется для доставки пончиков только в одно здание, при этом в каждое здание может быть доставлено не более одного пакета с неполной загрузкой. Склад для пончиков открыли в одном из зданий таким образом, чтобы количество доставляемых пакетов с пончиками было максимальным. Пончики в те здания, которые находятся на расстоянии более M от склада, не доставляются. Определите необходимое количество доставочных пакетов на этом складе.
Входные данные:
Даны два входных файла: файл A и файл B, каждый из которых в первой строке содержит числа N, K, V и M – количество зданий, длина кольцевой автодороги в километрах и максимальное расстояние, на которое можно осуществлять доставку пончиков. В каждой из следующих N строк находятся два числа: номер километра кольцевой автодороги, на котором расположено здание, и количество пончиков(все числа натуральные, количество не превышает 1000). Данные указаны в порядке расположения зданий на автодороге.
В ответе укажите два числа: сначала искомое значение для файла А, затем для файла B.
f = open(’27B.txt’)
n, k, v, m= map(int, f.readline().split())
a = [0] * k
for i in range(n):
z, p = map(int, f.readline().split())
a[z % k] = p // v + (p % v > 0)
cm = sum(a)
if m < k // 2:
c = sum(a[:m * 2 + 1])
cm = c if a[m] else 0
for i in range(1, k):
c += a[(i + m * 2) % k] - a[i - 1]
if a[(i + m) % k]:
cm = max(cm, c)
print(cm)