1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
n, kara = map(int, input().split())
klocki = [tuple(map(int, input().split())) for i in range(n)]
klocki.sort(reverse=True, key=lambda x: x[0])

najlepsza_ocena = 0
for poczatek in range(n):
    wysokosc = 0
    ostatni_wzorek = -1
    liczba_kar = 0
    for i in range(poczatek, n):
        rozmiar, wzorek = klocki[i]
        if i == poczatek or rozmiar < klocki[i-1][0]:
            wysokosc += rozmiar
            if ostatni_wzorek != -1 and ostatni_wzorek != wzorek:
                liczba_kar += 1
            ostatni_wzorek = wzorek
            ocena = wysokosc - (liczba_kar * kara)
            najlepsza_ocena = max(najlepsza_ocena, ocena)

print(najlepsza_ocena)