Mi servirebbe un aiuto con questo problema perché penso di non aver capito bene cosa chiede il problema io pensavo di averlo risolto da ciò che avevo capito, però al quanto pare mi sbagliavo.
Non mi convince molto l’idea dei due stack, infatti perdi informazioni sulla posizione dei pesci con direzione 0 rispetto a quelli con direzione 1. Prova a vedere questi 2 casi:
3
0 2
1 1
1 3
3
0 2
1 3
1 1
Il tuo programma sbaglia in entrambi perché crede che 0 2 si scontrerà prima con l’ultimo.
Ho provato a usare anche lower_bound e upper_bound per cercare l’elemento minimo al posto di usare la funzione lower ma ho avuto qualche problema e l’ho accantonata
Ho dato uno sguardo veramente veloce ma vedo che fai degli erase su un vector, sebbene sia una funzione molto veloce ha comunque una complessità lineare (in quanto deve spostare tutti gli elementi che si trovano tra quello eliminato e la fine), quindi la complessità del tuo algoritmo diventa N^2, che è troppo per le assunzioni del problema. Anche la funzione lower è lineare se non sbaglio, devi cercare di cambiare queste funzioni con qualcosa di più efficiente.
Potrebbe andar bene usare un lower_bound al posto della funzione lower, ed a proposito di questo, se io voglio fare la ricerca con lower_bound partendo dalla fine del vettore si puo fare una cosa del genere: