In ogni problema c’è la sezione “statistiche” dove si possono vedere le soluzioni più veloci e chi le ha fatte. Mi stavo chiedendo se ci fosse qualche trick in particolare per entrare nelle classifiche(e migliorare il tempo a parità di complessità computazionale) ed, eventualmente, guadagnare posizioni. Mi sembra che CMS metta in automatico tutti i flag tipo O3 per ottimizzare il codice, quindi probabilmente bisogna proprio lavorare sul programma in sè. Esistono dei “must” assoluti oppure l’unico modo è scrivere il programma in C e assembly anzichè C++?
Scusate per la domanda probabilmente un po’ inutile, però ero proprio curioso (ho notato che ci sono alcuni username sempre nelle classifiche, quindi suppongo che un trucco, o almeno una serie di good practices ci sia)
Per quel poco che ne so provo a risponderti.
Sicuramente nei problemi senza il grader è essenziale il fast input (a volte anche fast output ma in genere l’input è molto più lungo dell’output), vedi Fast I/O qui sul forum.
Per quanto riguarda il linguaggio in genere l’assembly è sconsigliato: se non sei un esperto disposto a dedicarci un po’ di tempo il compilatore lo ottimizza meglio di te. Più che scriverlo in C può essere utile qualcosa tipo array statici globali e cose simili (penso intendessi questo), ma non dipende tanto dall’essere C invece di C++ quanto fare meno controlli (quindi più facile da buggare).
Se vedi sempre gli stessi username nelle classifiche è perché hanno molta esperienza e ci si impegnano (immagino), ma naturalmente alcune strategie aiutano, ad esempio scrivere codice iterativo piuttosto che ricorsivo (quindi bottom up invece di top down), eliminare tutto il codice superfluo e usare la logica per quello specifico problema.
Sui flag di compilazione non so, bisognerebbe controllare. Ti lascio un paio di link utili (probabilmente più di tutto il resto):
post sul forum (il mio consiglio preferito è manda le soluzioni [...] alle 3 di mattina )
Se vuoi studiare come funziona in modo più approfondito, dovresti leggere qualcosa sulla cache (wikipedia) e come funziona l’assembly (capisci se una modifica migliora o peggiora effettivamente qualcosa) ma non so darti link per studiare.