# Pesci mangioni (ois\_pesci)

**URL:** <https://forum.olinfo.it/t/pesci-mangioni-ois-pesci/5238>\
**Category:** Aiuto\
**Created:** [12 Giugno 2018, 8:56pm UTC](https://forum.olinfo.it/t/pesci-mangioni-ois-pesci/5238 "2018-06-12T20:56:33Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![ElephanZ](https://forum.olinfo.it/letter_avatar_proxy/v4/letter/e/73ab20/32.png) [@ElephanZ](https://forum.olinfo.it/u/ElephanZ)\
**Post date:** [12 Giugno 2018, 8:56pm UTC](https://forum.olinfo.it/t/pesci-mangioni-ois-pesci/5238/1 "2018-06-12T20:56:33Z")

</div>

Buona sera, recentemente ho provato a svolgere questo esercizio senza riuscire a totalizzare più di 10 punti anche se a mio parere l’idea è corretta, in poche parole il programma mi da un output errato nel Subtask numero 2 e svariati output non corretti nel Subtask numero 3 e 4, il metodo risolutivo è molto semplice e a mio parere efficace per il tipo di problema:

`Creo due pile, una per i pesci in direzione 1 (sinistra) e una per i pesci in direzione 0 (destra), in ogni pila inserisco la dimensione dei relativi pesci. Se i pesci vanno tutti nella stessa direzione ritorno N e fine, Altrimenti confronto i due elementi in testa, il più piccolo viene eliminato (POP), il più grande resta.`

Qui c’è il mio codice: [https://pastebin.com/UCTWbMjQ](https://pastebin.com/UCTWbMjQ).

Se qualcuno ha un’idea o un suggerimento per il quale il mio metodo risolutivo sia errato o non funzionante in certi casi mi aiuterebbe molto. Grazie 🙂

---

<div class="post-metadata">

**Author:** ![zJack1342](https://forum.olinfo.it/user_avatar/forum.olinfo.it/zjack1342/32/711_2.png) [@zJack1342](https://forum.olinfo.it/u/zJack1342)\
**Post date:** [13 Giugno 2018, 6:48am UTC](https://forum.olinfo.it/t/pesci-mangioni-ois-pesci/5238/2 "2018-06-13T06:48:38Z")

</div>

Il caso che mi viene in mente è quando un pesce va a sinistra e non incontrerà nessun altro pesce che va a destra.  
Potresti avere un pesce piccolissimo che va a sinistra e un pesce gigante che va a destra ma i due non si incontreranno mai e avrai due pesci alla fine.

Sei sicuro che devi tenerti due pile o te ne basta una?

---

<div class="post-metadata">

**Author:** ![ElephanZ](https://forum.olinfo.it/letter_avatar_proxy/v4/letter/e/73ab20/32.png) [@ElephanZ](https://forum.olinfo.it/u/ElephanZ)\
**Post date:** [13 Giugno 2018, 9:30am UTC](https://forum.olinfo.it/t/pesci-mangioni-ois-pesci/5238/3 "2018-06-13T09:30:40Z")

</div>

Ho modificato in modo radicale il codice, ([https://pastebin.com/4e9exfj7](https://pastebin.com/4e9exfj7)) e gli output non corretti sono decisamente diminuiti. Però il punteggio rimane lo stesso.

---

<div class="post-metadata">

**Author:** ![zJack1342](https://forum.olinfo.it/user_avatar/forum.olinfo.it/zjack1342/32/711_2.png) [@zJack1342](https://forum.olinfo.it/u/zJack1342)\
**Post date:** [13 Giugno 2018, 12:40pm UTC](https://forum.olinfo.it/t/pesci-mangioni-ois-pesci/5238/4 "2018-06-13T12:40:40Z")

</div>

Ho sottoposto il tuo codice e oltre agli output non corretti, hai anche timeout dovuti alla funzione [erase](http://www.cplusplus.com/reference/vector/vector/erase/) .  
L’ idea della pila è giusta visto che ci permette di fare inserimenti ([push](http://www.cplusplus.com/reference/stack/stack/push/)) e rimozioni ([pop](http://www.cplusplus.com/reference/stack/stack/pop/)) con tempo costante.  
Prova a tenerti una pila per i pesci che vanno a destra e pian piano che trovi un pesce che va a sinistra verifica due cose:

1. se la pila è vuota : il pesce che va a sinistra continua il suo moto e rimarrà vivo.
2. se la pila non è vuota: il pesce che va a sinistra potrà essere mangiato oppure mangierà i pesci che stanno a destra.

La soluzione sarà data dalla somma della [size](http://www.cplusplus.com/reference/stack/stack/size/) della pila e il numero di pesci che sono andati a sinistra.
