1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
n, c = map(int, input().split())
klocki = []

for _ in range(n):
    klocki.append(list(map(int, input().split())))

kwyn = {}

for roz, kol in klocki[::-1]:
    kwyn[kol] = 0

maxwyn, lastkol = klocki[-1]
popro = maxwyn

kwyn[klocki[-1][1]] = klocki[-1][0]
for roz, kol in klocki[-2::-1]:
    if popro == roz:
        continue
    popro = roz
    if kol == lastkol:
        maxwyn += roz
        kwyn[kol] = maxwyn
    else:
        przekol = kwyn[kol] + roz
        przewyn = maxwyn + roz - c
        kwyn[kol] = max(kwyn[kol], przekol, przewyn)
        if przekol > maxwyn:
            maxwyn = przekol
            lastkol = kol
        if przewyn > maxwyn:
            maxwyn = przewyn
            lastkol = kol
                
    
print(maxwyn)