Volgende halte

Time limit: 0.3s Memory limit: 64MB Input: volgende.in Output: volgende.out

Volgende halte: Centraal Station, a.k.a The Goat.

Aceasta este vocea monotonă, dar reconfortantă, pe care Algorel o aude în fiecare dimineață. Deși și-a îndeplinit visul de a studia în străinătate, realitatea l-a lovit rapid: în „Țara Bicicletelor”, iarna nu e ca acasă, iar vântul tăios de la Marea Nordului l-a convins că mersul pe bicicletă este un sport extrem pentru care nu e încă pregătit. Din această cauză, Algorel va trebui să ia autobuzul până la universitate.

Cerință

Ruta sa are NN stații. El pleacă din stația 11 și trebuie să ajungă în stația NN. Există MM autobuze disponibile. Fiecare autobuz ii este caracterizat de:

  • sis_i – stația fixă de unde poate urca în acest autobuz;
  • did_i – distanța maximă (în număr de stații); autobuzul poate opri în orice stație jj, astfel încât si<jsi+dis_i < j \leq s_i + d_i;
  • cic_i – costul biletului pentru o călătorie (indiferent de stația la care coboară).

Ajutați-l pe Algorel să găsească o combinație de autobuze care să îl ducă la universitate și să aibă costul total minim. Dacă există mai multe variante de cost minim, se va alege oricare soluție ce folosește un număr minim de autobuze (schimburi minime).

Nu uitați! Este o cauză nobilă: dacă îl ajutați să economisească bani, va avea cu ce să își plătească căldura în casă.

Date de intrare

Fișierul de intrare volgende.in are următoarea structură:

  • Pe prima linie se află două numere naturale, NN și MM, reprezentând numărul de stații, respectiv numărul de autobuze.
  • Pe următoarele MM linii se află câte 3 numere naturale si,di,cis_i, d_i, c_i, reprezentând caracteristicile fiecărui autobuz.

Date de ieșire

Fișierul de ieșire volgende.out va avea următoarea structură:

  • Pe prima linie se vor afla două numere naturale, CC și KK, unde CC este costul minim total, iar KK este numărul de autobuze folosite.
  • Pe a doua linie se vor afla KK numere naturale, separate printr-un spațiu, reprezentând indicii autobuzelor folosite (în ordinea utilizării lor, numerotate de la 11 la MM conform fișierului de intrare).

Restricții și precizări

  • 1N,M100 0001 \leq N, M \leq 100 \ 000;
  • 1si<N1 \leq s_i < N;
  • 1diNsi1 \leq d_i \leq N - s_i;
  • 0ci1090 \leq c_i \leq 10^{9};
  • Fiecare drum trebuie să înceapă cu un autobuz ce pornește din stația 11 și să se încheie cu unul care se poate opri în stația NN;
  • Se garantează că există întotdeauna drum de la stația 11 la stația NN;
  • În cazul în care numai costul este corect, se va acorda 40% din punctaj;
  • În cazul în care costul și numărul de autobuze sunt corecte, dar drumul este greșit/lipsește, se va acorda 60% din punctaj;
  • În cazul în care costul, numărul de autobuze și drumul sunt corecte, se va acorda 100% din punctaj;
# Punctaj Restricții
1 11 di=2d_i = 2
2 17 ci=1c_i = 1
3 31 1N,M1 0001 \leq N, M \leq 1 \ 000
4 41 Fără restricții suplimentare

Exemplu

volgende.in

10 8
6 4 4
4 4 4
6 4 10
5 2 1
1 5 3
7 3 3
6 1 6
1 9 15

volgende.out

7 2
5 1

Explicație

Drumul optim este format din autobuzele (5,1)(5,1), având costul 3+4=73+4=7 și 22 autobuze. Alte două drumuri interesante sunt:

  • Varianta (5,4,6)(5,4,6), care are tot costul 7=(3+1+3)7 = (3+1+3), dar folosește 33 autobuze.
  • Varianta (8)(8), care are costul 1515 și folosește un singur autobuz.

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