Antivirus

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.

Descrizione del problema

Il nuovo sistema di gara delle Selezioni Territoriali funziona alla grande, ma Mojito non è così convinto... sembra infatti che la nota mascotte delle Olimpiadi abbia fiutato un virus nascosto fra i file inviati da un partecipante!

Conosciamo la lunghezza del virus e sappiamo che si ripete uguale nei quattro file che abbiamo ricevuto, ma non sappiamo dove. Aiutaci ad individuare il virus!

Rappresentazione realistica dell'aspetto di un virus informatico

Dettagli

I quattro file F1,F2,F3,F4F_1, F_2, F_3, F_4 sono dati in input, rappresentati come quattro stringhe di caratteri di lunghezza rispettivamente N1,N2,N3,N4N_1,N_2,N_3,N_4.

Il virus è una stringa di caratteri VV di lunghezza MM. La lunghezza MM è data in input, ma non si conosce il contenuto della stringa VV del virus.

Sappiamo con certezza che il virus VV appare all'interno di tutti e quattro i file, come sottostringa di caratteri consecutivi. Sappiamo inoltre che NON ci sono altre sottostringhe consecutive di lunghezza MM che si ripetono uguali in tutti e quattro i file.

Le posizioni dei caratteri nelle stringhe sono numerati a partire da 00. Per ciascuno dei quattro file FiF_i, trova la posizione in cui è inserito il virus, ovvero la posizione dove appare il primo carattere del virus VV all'interno della stringa FiF_i.

Assunzioni

  • T=12T=12, sono presenti 1212 casi di input.
  • 2N1,N2,N3,N41002 \le N_1, N_2, N_3, N_4 \le 100, i file non sono più lunghi di 100100 caratteri.
  • 2M202 \le M \le 20, il virus non è più lungo di 2020 caratteri.
  • Mmin(N1,N2,N3,N4)M \le \min(N_1, N_2, N_3, N_4), il virus non è più lungo del file più corto.
  • Tutti i caratteri dei file sono lettere minuscole dell'alfabeto inglese (dalla a alla z), NON sono presenti spazi.
  • È garantito che il virus esiste ed è unico.

Dati di input

La prima riga del file di input contiene un intero TT, il numero di casi di test. Seguono TT casi di test, numerati da 11 a TT. Ogni caso di test è preceduto da una riga vuota.

In ciascun caso di test:

  • La prima riga contiene quattro interi, N1N_1, N2N_2, N3N_3 e N4N_4, separati da uno spazio, che corrispondono alla lunghezza di ciascuno dei quattro file.
  • La seconda riga contiene un solo intero MM, che corrisponde alla lunghezza del virus.
  • Le successive 44 righe contengono rispettivamente le quattro stringhe F1F_1, F2F_2, F3F_3 e F4F_4.

Dati 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 #t: p1 p2 p3 p4

dove t è il numero del caso di test (a partire da 11) e i valori p1, p2, p3, p4 sono le posizioni in cui si trova il virus in ciascuno dei quattro file. Con posizione si intende l'indice del primo carattere del virus, il primo carattere del file ha indice zero.

Esempi di input/output


Input: Download

2

8 12 10 7
4
ananasso
associazione
tassonomia
massone

6 9 11 10
3
simone
ponessimo
milionesimo
cassonetto

Output: Download

Case #1: 4 0 1 1
Case #2: 3 1 4 4

Spiegazione

Nel primo caso d'esempio il virus è asso: ananasso, associazione, tassonomia, massone.

Nel secondo caso d'esempio il virus è one: simone, ponessimo, milionesimo, cassonetto. Nota che sim è presente nei primi tre file ma non nel quarto, quindi non è il virus cercato.

Formato di input

La prima riga del file di input contiene un intero TT, il numero di casi di test. Seguono TT casi di test, numerati da 11 a TT. Ogni caso di test è preceduto da una riga vuota.

Ogni caso di test è composto come segue:

  • una riga contenente i quattro interi N1\mathtt{N1}, N2\mathtt{N2}, N3\mathtt{N3}, N4\mathtt{N4}.
  • una riga contenente l'intero MM.
  • una riga contenente la stringa F1\mathtt{F1}.
  • una riga contenente la stringa F2\mathtt{F2}.
  • una riga contenente la stringa F3\mathtt{F3}.
  • una riga contenente la stringa F4\mathtt{F4}.

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 11), seguita dai quattro interi p1\mathtt{p1}, p2\mathtt{p2}, p3\mathtt{p3}, p4\mathtt{p4}.

Invia soluzione

Accedi per inviare soluzioni
Accedi