Science against spam

Ciao a tutti
sto cercando di risolvere il problema delle IOI Science against spam ma mi da qualche output non corretto.

Avete qualche idea del perchè?

Questo è il codice: https://pastebin.com/UxJ8Ejei

Credo che il problema sia questo:

            if(bad && good)
                break;

Quando tu esci dal ciclo interno potresti avere ancora delle parole da leggere e in questo modo vai a “sfasare” le mail successive!

1 Mi Piace

100/100 grazie mille
sono proprio stupido :smiley:

1 Mi Piace

Come posso “non prendere in input” alcune delle parole che non mi servono, Perche come aveva scritto nel codice anche rossimelthomas nel momento in cui mi accorgo di aver gia trovato una parole "buona " ed una “cattiva” è totalmente inutile continuare a leggere la mail, ma nel caso in cui esco dal ciclo come anche fatto notare quelle parole rimaste sfaseranno le mail successive. Allora mi stavo chiedendo se esiste una funzione per evitare di prendere in input un DETERMINATO numero di parole in quanto conosco esattamente quante parole sono rimaste, credo che questo passaggio potrebbe velocizzare di molto il codice ma non so se è possibile fare una cosa del genere.

puoi leggerle senza eseguire la ricerca binaria o l’algoritmo che hai implementato, non dovrebbe dare problemi
In ogni caso forse il metodo seek può aiutarti
Non so come si usa perchè non l’ho provato ma mi sembra che si possano saltare delle righe dal file di testo con questo metodo

fseek non funziona su stdin, quindi per usarlo l’input deve essere necessariamente da file. In ogni caso la funzione chiede come parametro un offset a cui spostarsi, quindi senza sapere la lunghezza delle stringhe non è possibile saltarle in questo modo.

2 Mi Piace

Si beh alla fine non può sapere quanto saltare

Se si trattasse solo di numero di stringhe ci si può arrivare facilmente, se si tratta di numero di caratteri allora no

Si intende numero di caratteri

1 Mi Piace