Classifica [e lungomare], nessun substask (eccetto 5) funzionante

Ed è a parer mio abbastanza strana come cosa.
Il subtask 1 non funziona completamente. Ma ciò significherebbe che neanche gli esempi funzionano, e ciò non è il caso, dato che entrambi gli esempi sono funzionanti in locale.

Il subtask 5 è l’unico che funziona a dovere. Secondo il testo vuol dire che supera(id) non viene mai invocata, e quindi dovrei supporre che le altre funzioni siano implementate a dovere quando non vi è uno stacco. Ma ho testato vari esempi in locale con tante query che eliminano e ricombinano i classificati, perciò non riesco a capire. Che ci sia un problema con l’ambiente di testing?

Nessun altro subtask funziona, quindi ho solo 17 punti

EDIT: Ecco il mio sorgente: https://paste.ubuntu.com/24572775/

EDIT2: mi sono accorto che lo stesso accade anche con Lungomare. Solo che lì ho solo 0/100. I subtask di esempio in locale funzionano ma non durante la valutazione. Inoltre ho testato i casi particolari come distanza tra passerelle e/o lunghezza costante e in locale ottengo risultati corretti. Che ci sia qualcosa che non va con i grader che usate nella fase di testing?

Il “bug” sembra essere più semplice del previsto :smile: ho provato a rimuovere tutte le printf() dal tuo codice e ora sembra funzionare :wink:

Accidenti, mi sono accorto di non averle commentate tutte.

Ok, e per lungomare? Lì non chiamo mai la printf()

Provando sul mio PC, pare che nel primo caso di esempio venga stampato 40 invece di 60, ma solo quando il binario è compilato con le ottimizzazioni (flag -O2), altrimenti stampa 60.

(cms) ~/g/o/p/lungomare ❯❯❯ g++ sol/butta.cpp sol/grader.cpp -o sol/butta
(cms) ~/g/o/p/lungomare ❯❯❯ ./sol/butta < input/input0.txt
60
(cms) ~/g/o/p/lungomare ❯❯❯ g++ -O2 sol/butta.cpp sol/grader.cpp -o sol/butta
(cms) ~/g/o/p/lungomare ❯❯❯ ./sol/butta < input/input0.txt
40

Molto raramente succede che sia l’ottimizzatore del compilatore ad avere un bug, producendo così a tutti gli effetti un binario errato. In questo caso, se dovessi scommettere, direi che è dovuto a qualche undefined behavior nel codice sorgente, che (essendo undefined) causa un certo comportamento in un caso ed un comportamento diverso nell’altro caso.

Per esempio, ho appena notato che nella funzione percorri che hai implementato manca l’istruzione return :dizzy_face:

1 Mi Piace