Festival

Time limit: 4s Memory limit: 512MB Input: festival.in Output: festival.out

Andrei este pasionat de festivaluri și vrea să se bucure la maxim de cele NN festivaluri anunțate. Fiecare festival ii dintre cele NN este caracterizat prin trei valori: TiT_i — timpul de start, XiX_i — locația pe axa Ox și SiS_i — satisfacția oferită de participarea la festivalul ii.

Știm că Andrei poate începe de la orice festival și se poate deplasa între festivaluri folosind bicicleta, însă poate parcurge cel mult DD unități de distanță dintr-un singur drum, din cauza oboselii. Astfel, el poate merge de la festivalul ii la festivalul jj dacă sunt îndeplinite simultan următoarele trei condiții:

  • TiTjT_i \leq T_j
  • XiXjD|X_i - X_j| \leq D
  • XiXjTjTi|X_i - X_j| \leq T_j - T_i

Altfel spus, bicicleta lui Andrei se poate deplasa doar între festivaluri aflate la o distanță de cel mult DD și pentru care timpul dintre începuturile celor două festivaluri este suficient de mare pentru ca Andrei să poată ajunge (având în vedere că viteza bicicletei este de 1 unitate de lungime pe unitate de timp).

Determinați suma maximă a satisfacției care se poate obține participând la un grup de festivaluri, respectând condițiile.

Date de intrare

Fișierul de intrare festival.in conține pe prima linie numerele NN și DD, iar pe următoarele NN linii câte trei numere întregi TiT_i, XiX_i și SiS_i (1iN1 \leq i \leq N) reprezentând timpul de start, locația pe axa Ox și satisfacția oferită de participarea la festivalul ii.

Date de ieșire

Fișierul de ieșire festival.out va conține un singur număr întreg, reprezentând suma maximă a satisfacției.

Restricții și precizări

  • 1N100 0001 \leq N \leq 100 \ 000
  • 0D1 000 000 0000 \leq D \leq 1 \ 000 \ 000 \ 000
  • 0Ti,Xi,Si1 000 000 0000 \leq T_i, X_i, S_i \leq 1 \ 000 \ 000 \ 000
  • Oricare ar fi iji\neq j, vom avea TiTjT_i \neq T_j sau XiXjX_i \neq X_j
  • Andrei consideră că participă la festival, dacă este acolo la momentul de început al festivalului.
# Scor Restricții
1 16 N20N \leq 20
2 18 N2 000N \leq 2 \ 000
3 3 D=0D = 0
4 34 D=1 000 000 000D = 1 \ 000 \ 000 \ 000
5 29 Fără alte restricții suplimentare

Exemplul 1

festival.in

5 3
3 5 30
1 2 80
7 6 50
8 9 20
5 4 10

festival.out

140

Explicație

Pentru acest exemplu avem N=5N=5 festivaluri și D=3D=3.
Dacă Andrei începe cu festivalul (1,2,80)(1,2,80), atunci singurul festival care respectă condițiile de deplasare este (5,4,10)(5,4,10) (timpul crește, distanța \leq 3, și distanța \leq diferența de timp). Apoi, de la festivalul (5,4,10)(5,4,10) se poate duce doar la (7,6,50)(7,6,50) respectând aceleași condiții. Astfel, avem (1,2,80)(1,2,80) \textrightarrow (5,4,10)(5,4,10) \textrightarrow (7,6,50)(7,6,50) cu suma satisfacției 140. Nu există o modalitate de a obține o sumă mai mare.

Exemplul 2

festival.in

10 50
86 43 23
24 12 16
98 37 42
19 42 83
79 55 59
42 92 48
45 57 71
67 64 97
97 71 68
57 38 37

festival.out

378

Explicație

O modalitate de a obține suma 378 este (19,42,83)(45,57,71)(67,64,97)(79,55,59)(97,71,68)(19, 42, 83) \Rightarrow (45, 57, 71) \Rightarrow (67, 64, 97) \Rightarrow (79, 55, 59) \Rightarrow (97, 71, 68).

Log in or sign up to be able to send submissions!