# Aiuto per Festa Estiva (pre-egoi-festaestiva)

**URL:** <https://forum.olinfo.it/t/aiuto-per-festa-estiva-pre-egoi-festaestiva/9897>\
**Category:** Aiuto\
**Created:** [26 Febbraio 2026, 10:48am UTC](https://forum.olinfo.it/t/aiuto-per-festa-estiva-pre-egoi-festaestiva/9897 "2026-02-26T10:48:18Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![DrFardNerd](https://forum.olinfo.it/user_avatar/forum.olinfo.it/drfardnerd/32/2838_2.png) [@DrFardNerd](https://forum.olinfo.it/u/DrFardNerd)\
**Post date:** [26 Febbraio 2026, 10:48am UTC](https://forum.olinfo.it/t/aiuto-per-festa-estiva-pre-egoi-festaestiva/9897/1 "2026-02-26T10:48:18Z")

</div>

Ciao a tutti, ho bisogno di aiuto per risolvere il problema [Festa Estiva](https://training.olinfo.it/task/pre-egoi-festaestiva).

Avevo idea di usare un dizionario: come chiavi l’inizio delle vacanze e come valore la fine. Poi in un for iterato Y volte, vedere quando un amico entra nelle vacanze e diminiuire di 1 i liberi, e quando c’e il giorno di rientro aumento di 1. Vari testcase vanno oltre il limite di tempo o l’output on è corretto. Penso che il problema sia sul fatto che io stia usando map, ma non so quale altra struttura dati utilizzare.

Ecco il mio codice:

```auto
#include <vector>
#include <map>
using namespace std;

int organizza(int N, int X, int Y, vector<int> A, vector<int> B){
    int liberi=N;
    map<int, int> vacanze;//inizio, fine
    for(int i = 0; i<N; i++){
        vacanze[A[i]] = B[i];
    }
    for(int i=0;i<=Y;i++){
        for(auto [inizio, fine] : vacanze){
            if (inizio==i)
                liberi-=1;
            else if (fine==i)
                liberi+=1;
        }
    }
    return liberi;
}

```

Grazie mille in anticipo!

---

<div class="post-metadata">

**Author:** ![BestCrazyNoob](https://forum.olinfo.it/letter_avatar_proxy/v4/letter/b/7cd45c/32.png) [@BestCrazyNoob](https://forum.olinfo.it/u/BestCrazyNoob)\
**Post date:** [28 Febbraio 2026, 10:16am UTC](https://forum.olinfo.it/t/aiuto-per-festa-estiva-pre-egoi-festaestiva/9897/2 "2026-02-28T10:16:40Z")

</div>

Intanto la tua soluzione sbaglia il secondo esempio, quindi parti da lì per vedere cosa non va.  
Altre osservazioni sul tuo codice:

- Non stai davvero utilizzando la mappa: l’unica cosa che ci fai è iterare su tutti i valori, e per quello basta un vettore
- La tua soluzione è O(Y\*N): iteri prima su tutti i tempi da 1 a Y e poi su tutte le N vacanze. Tenendo conto che un computer esegue circa 10^8 iterazioni al secondo, con Y = 10^9 e N = 10^6 il tuo algoritmo impiegherebbe qualche giorno ad eseguire… Pure O(Y) è troppo lento per questo problema. Serve una soluzione O(N) o O(N \* logN) (per intenderci, il tempo di esecuzione di un sort)

Se ti serve un aiuto per risolvere il problema:

Ti interessa davvero _quali_ amici partono e tornano in un dato momento?

Con questo ragionamento puoi arrivare tranquillamente ad una soluzione O(Y), da lì non è troppo difficile.

---

<div class="post-metadata">

**Author:** ![DrFardNerd](https://forum.olinfo.it/user_avatar/forum.olinfo.it/drfardnerd/32/2838_2.png) [@DrFardNerd](https://forum.olinfo.it/u/DrFardNerd)\
**Post date:** [6 Marzo 2026, 11:02am UTC](https://forum.olinfo.it/t/aiuto-per-festa-estiva-pre-egoi-festaestiva/9897/3 "2026-03-06T11:02:18Z")

</div>

Grazie per l’aiuto, ho capito la logica dietro il problema. Con questo codice riesco a risolvere molti test di casi, ma non li risolve tutti dentro i subtask. Cosa sbaglio?

```auto
#include <vector>
#include <map>
using namespace std;

int organizza(int N, int X, int Y, vector<int> A, vector<int> B){
    int liberi=N;
    multimap<int, int> vac;
    for(int i=0;i<N;i++){
        vac.insert({A[i],-1});
        vac.insert({B[i],1});
    }
    for(auto &it:vac){
        if (it.first<=Y)
            liberi+=it.second;
        else{break;}
    }
    return liberi;
}

```

---

<div class="post-metadata">

**Author:** ![ahbel\_d3v](https://forum.olinfo.it/user_avatar/forum.olinfo.it/ahbel_d3v/32/3225_2.png) [@ahbel\_d3v](https://forum.olinfo.it/u/ahbel_d3v)\
**Post date:** [7 Marzo 2026, 7:53pm UTC](https://forum.olinfo.it/t/aiuto-per-festa-estiva-pre-egoi-festaestiva/9897/4 "2026-03-07T19:53:03Z")

</div>

Ciao!  
Ti consiglio di ragionare sul fatto che ci potrebbero essere duplicati ( {10, 1} {10, 1} ) e su come potresti evitarli. In più dovresti memorizzare il massimo di persone libere! quindi ragiona su come potresti fare anche questa cosa.

Hint: usa una map!
