Problema "ricarica" OIS 2016 - seconda gara

Buonasera a tutti,

come già successo in gara, la sottoposizione di questo problema mi da 0/100, ma i risultati dei casi d’esempio mi vengono corretti se li provo.

Qualcun altro ha lo stesso problema per caso?

Guardando il codice sembra essere un undefined behavior, causato dall’utilizzo di una variabile non inizializzata. Ad esempio questo codice avrà un comportamento diverso in base a diversi fattori:

int a;
a += 5;
cout << a;

P.S. se sai compilare/eseguire dalla linea di comando di linux ti consiglio di provare valgrind, è davvero utile in casi come questo… mi è bastato produrre l’eseguibile ois_ricarica a partire dal tuo sorgente ed eseguire valgrind ./ois_ricarica con l’input di esempio, e valgrind ha fatto il resto:

...
==23996== Conditional jump or move depends on uninitialised value(s)
==23996==    at 0x400A06: ricarica(int, int, int*, int*) (ois_ricarica.cpp:28)
==23996==    by 0x400BB0: main (ois_ricarica.cpp:46)
...

Come si può vedere, l’accesso al valore non inizializzato avviene alla riga 28

1 Mi Piace

Grazie mille, stavo impazzendo. Ora devo solo sistemare altri errori, ma almeno i test case di prova me li da corretti ora.

Grazie ancora