Mojito vuole pianificare un'escursione sulle colline di Volterra. Ha a disposizione una mappa rettangolare, in cui è indicata l'altitudine della zona. Mojito vuole fare un percorso che parte dall'angolo in alto a sinistra della mappa e raggiunge l'angolo in basso a destra, in modo tale che il dislivello massimo che è costretto a fare ad ogni spostamento sia il mimimo possibile. Aiuta Mojito a calcolare questo dislivello!
La mappa è una tabella di numeri interi: ciascuno esprime l'altitudine in metri nel corrispondente punto della mappa. La tabella è composta di righe e colonne, numerate rispettivamente da a e da a . Nella cella di coordinate , ovvero in corrispondenza della riga e della colonna , è indicato il valore dell'altitudine .
Mojito inizia l'escursione dalla cella di coordinate , in alto a sinistra, ed arriva alla cella di coordinate , in basso a destra. Ogni minuto si sposta di esattamente una cella, in una della quattro possibili direzioni (in alto, in basso, a destra o a sinistra). Non può però uscire dalla mappa.
Stabilito un percorso lungo la mappa, il pericolo associato a quel percorso è il massimo dislivello tra due celle consecutive lungo il percorso, ovvero la differenza di altitudine fra due celle consecutive: non cambia nulla se lo spostamento è in salita o in discesa.
Calcola il pericolo minimo, fra tutti i percorsi possibili che partono dalla cella e arrivano alla cella .
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.
In ciascun caso di test, la prima riga contiene due interi e separati da uno spazio che corrispondono all'altezza, , e alla larghezza, , della mappa. Le successive righe contengono ciascuna interi separati da spazi, corrispondenti all'altitudine in metri lungo una riga della mappa. Ovvero, in ciascun caso di test, l'altitudine alle coordinate e appare sulla riga -esima, in posizione .
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: p
dove t
è il numero del caso di test (a partire da ) e p
è il minimo
valore di pericolo trovato per quel test case.
Input: Download
3
2 2
100 150
110 130
4 4
1 5 6 7
2 4 3 8
2 9 2 8
3 3 2 9
1 10
2 4 6 8 10 12 14 16 18 20
Output: Download
Case #1: 20
Case #2: 1
Case #3: 2
Nel primo caso d'esempio, Mojito sceglie il percorso:
100 150
â–¼
110 â–º 130
ovvero, con i seguenti spostamenti:
Il pericolo del percorso è (il massimo fra i dislivelli, e ).
Non ci sono percorsi migliori, quindi la risposta corretta è . L'altro percorso possibile è:
100 â–º 150
â–¼
110 130
che ha dislivelli e , e quindi ha pericolo .
Nel secondo caso d'esempio, Mojito sceglie il percorso:
1 5 â–º 6 â–º 7
â–¼ â–² â–¼
2 4 â—„ 3 8
â–¼ â–² â–¼
2 9 2 8
â–¼ â–² â–¼
3 â–º 3 â–º 2 9
Gli spostamenti hanno tutti dislivello o , quindi il pericolo del percorso è . Non ci sono percorsi di pericolo pari a , quindi la risposta corretta è .
Nel terzo caso d'esempio c'è un solo percorso possibile.