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)
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) |