Aiuto Ottimizzazione del Codice

Mi stavo cimentando nella risoluzione dei problemi delle Olimpiadi e mi sono chiesto come fosse possibile ottimizzare il codice per racimolare più secondi possibile.
Per esempio avevo sentito parlare delle direttive #pragma; o anche di metodi migliori per leggere in input.

Le ottimizzazioni di cui parli possono farti guadagnare al massimo qualche piccola frazione di secondo, ma ciò è abbastanza inutile (eccetto che per scalare le classifiche dei task).

1 Mi Piace

Per quanto riguarda la mia esperienza, l’unica riga di codice che può fare una differenza piuttosto significativa sui tempi di esecuzione è la seguente:

std::ios::sync_with_stdio(false);

Questo comando permette di disattivare la sincronizzazione fra gli stream standard di c e di c++, velocizzando l’import dei dati.

Penso che con “#pragma” tu ti riferissi ad un qualcosa di questo tipo:

#pragma GCC optimize("O3")

Con questo comando è possibile cambiare i livelli di ottimizzazione del compilatore, tuttavia la differenza è spesso pressoché nulla.

Come già detto da @bortoz nella stramaggioranza dei casi i problemi di TLE ci sono solo nel momento in cui si adottano soluzioni con complessità non ottimali.

La mia esperienza è piuttosto limitata, quindi si accettano correzioni dai veterani di questa piattaforma, abbiate venia! :see_no_evil:

3 Mi Piace