Writing - IOI 2006

Salve a tutti, è da stamattina che provo a risolvere “Writing” delle IOI 2006 ma non riesco a totalizzare più di 25pt…
La mia idea è quella di:
Prendere N-g+1 blocchi dalla stringa S, ordinare ogni singolo blocco e confrontarlo con la stringa W già ordinata… Se sono uguali vuol dire che la stringa W è presente in qualche modo nella stringa S e incremento il contatore. Spero di essere stato chiaro, nel caso in cui io non mi sia spiegato bene chiedetemi pure :slight_smile:
Qui c’è il mio codice: (https://pastebin.com/v0YGkEHN).
Grazie in anticipo :smiley:

Ciao, vorrei ricordare che non stiamo programmando in Lua, ma bensì in C/C++, quindi gli array in generate e in questo caso le stringhe sono 0-based e perciò devi modificare gli indici di partenza e fine all’interno del ciclo for.
Nonostante ciò questa modifica ti permetterà di ottenere 60/100. Se vuoi ottenere 100 devi pensare a come confrontare più efficientemente le sottostrighe, ma soprattutto come ridurre la memoria.

5 Mi Piace

Hai ragione ma comunque gli indici di partenza e fine all’interno del ciclo li avevo modificati poco dopo aver creato il post ma siccome non ottenevo 100/100 non ho voluto modificare il testo caricando di nuovo il codice… Per confrontare le sottostringhe puoi darmi un consiglio ?

Prova a pensare a come confrontare una sottostringa conoscendo l’esito del confronto precedente.

5 Mi Piace