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 stații. El pleacă din stația și trebuie să ajungă în stația . Există autobuze disponibile. Fiecare autobuz este caracterizat de:
- – stația fixă de unde poate urca în acest autobuz;
- – distanța maximă (în număr de stații); autobuzul poate opri în orice stație , astfel încât ;
- – 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, și , reprezentând numărul de stații, respectiv numărul de autobuze.
- Pe următoarele linii se află câte 3 numere naturale , 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, și , unde este costul minim total, iar este numărul de autobuze folosite.
- Pe a doua linie se vor afla numere naturale, separate printr-un spațiu, reprezentând indicii autobuzelor folosite (în ordinea utilizării lor, numerotate de la la conform fișierului de intrare).
Restricții și precizări
- ;
- ;
- ;
- ;
- Fiecare drum trebuie să înceapă cu un autobuz ce pornește din stația și să se încheie cu unul care se poate opri în stația ;
- Se garantează că există întotdeauna drum de la stația la stația ;
- Î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 | |
| 2 | 17 | |
| 3 | 31 | |
| 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 , având costul și autobuze. Alte două drumuri interesante sunt:
- Varianta , care are tot costul , dar folosește autobuze.
- Varianta , care are costul și folosește un singur autobuz.