Salve, prova a spiegare la tua idea cosi è più facile capire cosa potrebbe essere sbagliato.
Intanto prova questi due casi di test per migliorare la tua soluzione:
1
17
5
20 14 1 4 20
Immagino che sia voluto restituire 0 se i due valori sono uguali.
salve in pratica la mia soluzione era quella di stabilire 2 somme, una per emil e l’altra per gemma e di controllare chi fosse in ritardo dei 2 in modo che ogni volta faccio andare avanti solo la persona che è in ritardo di quella differenza tra il suo tempo e quello dell’altra persona.
se i tempi coincidono faccio andare avanti entrambi ed ecco spiegato il return zero.
alla fine di ogni ciclo controllo se il loro tempi coincidono e se rimane solo una bellezza da visitare per cui se si beccano.
qrazie ai casi di test ho migliorato qualcosa ma non riesco a passare ancora la subtask 3
va bene ma in generale non mi è chiaro cosa intendono loro con N<=1000 ad esempio.
per superare la subtask il programma deve funzionare con N maggiore di 1000?
I subtask sono un insieme di casi di test dove vigono determinate caratteristiche che vengono indicate. Questo permette di ottenere punteggi parziali qual’ora non si riesca a risolvere l’istanza generale del problema. Di solito limitano la grandezza dei valori in input per far ottenere punti a soluzioni lente.
Nel caso di N \leq 1000 ti garantiscono che per quel gruppo di casi N non sarĂ mai maggiore di 1000 permettendo cosi a chi trova una soluzione O(N^2) di ottenere il punteggio di quel subtask.
Un esempio di soluzione O(N^2) per questo problema è: fissata un attrazione quanto tempo impiegano i due ragazzi ad arrivarci?
Per quanto riguarda l’idea esistono sicuramente modi più semplici per scriverla per esempio: per ogni attrazione ti calcoli dopo quanto tempo la raggiunge Gemma in O(N), quanto tempo impiega Emil per raggiungerla in O(N) e poi verifichi se esiste almeno un’attrazione che Gemma ed Emil iniziano a visitare contemporaneamente sempre in O(N).
Su un esercizio in cui il codice è così semplice non c’è molto che puoi fare per abbassare il tempo d’esecuzione. Un’idea potrebbe essere quella di allocare meno memoria( si può fare in O(N) tempo ed O(1) memoria).
Risparmiare 4 operazioni su 100000 non fa nessuna minima differenza, soprattutto se si tratta di comparazioni che richiedono un numero quasi nullo di cicli di cpu. Se ti è sembrato più veloce è solo una casualità , difatti il server non è sempre preciso e sottomettendo la stessa soluzione più volte si possono ottenere tempi lievemente diversi.