Attenzione: Questo task ha un tempo limite di 10 minuti per l'invio della soluzione. Una volta richiesto un input, il timer partirà in automatico, e dopo la scadenza non sarà più possibile inviare una soluzione per quell'input. È sempre possibile richiedere un nuovo input, per cui non preoccuparti se il timer scade: dovrai semplicemente richiedere e scaricare un nuovo input.
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: superluigi.c
- Scarica la traccia in C++: superluigi.cpp
- Scarica la traccia in C#: superluigi.cs
- Scarica la traccia in Go: superluigi.go
- Scarica la traccia in JavaScript: superluigi.html
- Scarica la traccia in Java: superluigi.java
- Scarica la traccia in Pascal: superluigi.pas
- Scarica la traccia in Python: superluigi.py
- Scarica la traccia in VisualBasic: superluigi.vb
Luca ha comprato il nuovissimo videogioco SuperLuigi. Luigi, il protagonista del videogioco, in ogni livello deve superare piloni numerati da ad . Su ogni pilone ci sono piattaforme su cui Luigi può saltare. La piattaforma più in basso dell'-esimo pilone si trova ad metri dal suolo e le rimanenti piattaforme del pilone si trovano ciascuna metri sopra la piattaforma sottostante. Le piattaforme dell'-esimo pilone sono quindi collocate alle altezze . Quindi la piattaforma numero , con , sul pilone numero , con , si troverà ad metri di altezza rispetto al suolo. Luigi deve raggiungere una qualsiasi piattaforma del pilone partendo da terra, ad altezza zero, subito prima del pilone . Inizialmente deve quindi saltare su una qualunque piattaforma del pilone , per poi spostarsi di pilone in pilone.
Per ogni pilone , con , Luigi può saltare da ogni piattaforma del pilone a una qualsiasi piattaforma del pilone . Luca non vuole solo completare il livello, ma vuole metterci anche il minor tempo possibile. Per saltare da un punto ad altezza ad un punto di altezza Luigi impiega (valore assoluto di ) secondi. Il tempo totale impiegato per completare un livello è quindi la somma dei tempi impiegati in ogni salto. Quanti secondi servono, al minimo, per completare il livello?
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 come segue:
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 #test: tempo
"
dove è il numero del caso di test (a partire da ) e l'intero è la riposta al test.
Input:
3
2 2
1 1
2 3
3 3
9 0 8
8 2 15
5 2
6 10 7 1 4
4 17 10 14 1
Output:
Case #1: 1
Case #2: 18
Case #3: 22
Nel primo caso d'esempio Luca può far saltare Luigi da terra fino alla piattaforma sul pilone ad altezza impiegandoci secondo. Poi può far saltare Luigi sulla piattaforma sul pilone ad altezza impiegandoci secondi. La riposta dunque sarà e Luca non può fare di meglio.
Nel secondo caso d'esempio Luca può far fare le seguenti mosse a Luigi:
Nel terzo caso d'esempio, il livello è come segue.