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: espanditutto.c
- Scarica la traccia in C++: espanditutto.cpp
- Scarica la traccia in C#: espanditutto.cs
- Scarica la traccia in Go: espanditutto.go
- Scarica la traccia in JavaScript: espanditutto.html
- Scarica la traccia in Java: espanditutto.java
- Scarica la traccia in Pascal: espanditutto.pas
- Scarica la traccia in Python: espanditutto.py
- Scarica la traccia in VisualBasic: espanditutto.vb
Descrizione del problema
Noemi ha un bellissimo monitor i cui pixel sono organizzati su righe e colonne. Ogni pixel è indicato da una coppia di indici : il pixel in alto a sinistra è indicato dalla coppia , quello in basso a destra dalla coppia . Un giorno Noemi nota che purtroppo pixel sono bruciati. Noemi sa che un danno del genere nasce e si espande nel seguente modo: uno stesso giorno alcuni pixel si bruciano spontanamente; da quel giorno, ogni giorno si bruciano anche i pixel adiacenti (cioè con un lato in comune) a quelli che si sono bruciati nei giorni precedenti.
Noemi vuole capire quanti giorni fa al massimo si sono bruciati i primi pixel, la sapresti aiutare?
Attenzione: in tutti i gruppi di test, eccetto l'ultimo, i pixel bruciati non toccano il bordo del monitor.
Formato di input
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:
- una riga contenente i tre interi , , .
- righe, la -esima contenente i due interi , .
Formato di output
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:
", dove test
è il numero del caso di test (a partire da ), seguita dall'intero .
Assunzioni
- , nei file di input che scaricherai saranno presenti esattamente casi di test.
- .
- , dove è l'indice di riga dell'-esimo pixel bruciato fornito nell'input.
- , dove è l'indice di colonna dell'-esimo pixel bruciato fornito nell'input.
- in tutti i gruppi di test, eccetto l'ultimo, i pixel bruciati non toccano il bordo del monitor.
Gruppi di testcase:
I casi di test sono suddivisi in 10 gruppi.
Ogni gruppo vale 5 punti che vengono ottenuti se si risolvono correttamente tutti i testcase del gruppo.
Gruppi diversi possono contenere testcase rispondenti alle stesse assunzioni.
Esempi di input/output
Input:
4
3 4 6
2 4
3 4
3 3
5 6 6
4 3
3 4
4 5
4 4
5 4
5 1 10
1 8
1 6
1 9
1 7
1 10
6 8 8
4 3
7 6
3 4
4 5
4 4
5 4
Output:
Case #1: 0
Case #2: 1
Case #3: 4
Case #4: 0
Spiegazione
Nel primo caso di esempio, il danno attuale osservato da Noemi corrisponde al danno iniziale. Quindi il danno è stato fatto oggi! Il numero scritto in ognuno dei pixel bruciati indica il giorno in cui il pixel si è bruciato.
Nel secondo caso di esempio, il danno iniziale interessava il solo pixel . In un solo giorno sono poi stati coinvolti i 4 pixel ad esso adiacenti. Il numero scritto in ognuno dei pixel bruciati indica il giorno in cui il pixel si è bruciato.
Nel terzo caso di esempio il danno che Noemi vede sul suo monitor potrebbe essere stata causata giorni se il pixel in si fosse bruciato o anche giorni se il pixel in si fosse bruciato. I primi pixel si sono bruciati al più giorni fa e il danno non sarebbe potuto avvenire prima. Il numero scritto in ognuno dei pixel bruciati indica il giorno in cui il pixel si è bruciato.
Nel quarto caso di esempio il danno che Noemi vede sul suo monitor è il seguente: