Per aiutarti con questo task, abbiamo preparato delle tracce di soluzione, che includono solo le parti di lettura dell'input e scrittura dell'output (da tastiera e su schermo). Puoi decidere se leggere/scrivere su file decommentando le opportune righe di codice.
- Scarica la traccia in C: ostacoli.c
- Scarica la traccia in C++: ostacoli.cpp
- Scarica la traccia in Python: ostacoli.py
- Scarica la traccia in Java: ostacoli.java
- Scarica la traccia in C#: ostacoli.cs
- Scarica la traccia in JavaScript: ostacoli.html
- Scarica la traccia in JavaScript (Node.js): ostacoli.js
Monica ha deciso di portare Mojito ad una corsa ad ostacoli!
La corsa si svolge in un tracciato rettilineo lungo metri, e la partenza si trova all'inizio del tracciato nel punto . Nel tracciato sono presenti ostacoli: ciascun ostacolo si trova a metri dalla partenza ed ha una difficoltà , per cui superando tale ostacolo Mojito guadagna punti.
Per rendere la corsa più difficile, gli organizzatori hanno però deciso che ciascun ostacolo può essere attraversato solo in un breve intervallo. In particolare, l'-esimo ostacolo appare dopo secondi dall'inizio della gara e scompare immediatamente dopo, quindi per poter superare l'ostacolo Mojito deve trovarsi esattamente nel punto all'instante . Mojito può correre avanti e indietro nel tracciato oppure può stare fermo a rincorrersi la coda, purtroppo però è in grado di correre solo fino a metro al secondo.
La corsa dura esattamente secondi, al termine dei quali si sommano i punteggi degli ostacoli che Mojito è riuscito a superare. Mojito si è allenato duramente, ed è quindi in grado di superare tutti gli ostacoli che riesce a raggiungere in tempo senza difficoltà . Qual è il massimo numero di punti che Mojito riesce a totalizzare?
La prima riga del file di input contiene un intero , il numero di casi di test. Seguono casi di test, numerati da a . Ogni caso di test è preceduto da una riga vuota.
Ogni caso di test è composto da righe:
Il file di output deve contenere la risposta ai casi di test che sei riuscito a risolvere. Per ogni caso di test che hai risolto, il file di output deve contenere una riga con la dicitura
Case #t: x
dove t
è il numero del caso di test (a partire da ) e il valore x
è il massimo punteggio che Mojito può totalizzare.
Nei primi casi di test valgono le seguenti assunzioni aggiuntive:
Nei primi casi di test valgono, inoltre, le seguenti assunzioni aggiuntive:
Input:
2
2 20 20
7 30 2
9 10 11
4 10 10
7 20 7
4 6 7
3 7 8
2 5 9
Output:
Case #1: 10
Case #2: 20
Nel primo caso d'esempio Mojito non è in grado di raggiungere il primo ostacolo all'istante in quanto è troppo distante dalla partenza. Quindi, può solo prendere il secondo ostacolo guadagnando punti. Per farlo, per esempio, può correre fino al punto dove comparirà l'ostacolo, rincorrersi la coda sul posto per 2 secondi e all'istante superare l'ostacolo.
Nel secondo caso d'esempio Mojito può andare all'istante nel punto e poi spostarsi nei punti e prendendo gli ultimi ostacoli, oppure può andare all'istante nel punto . La prima scelta permette a Mojito di guadagnare punti mentre la seconda scelta gli permette di guadagnare punti, la risposta è quindi .