# Tieni aggiornato il catalogo (Algobadge) 50/100

**URL:** <https://forum.olinfo.it/t/tieni-aggiornato-il-catalogo-algobadge-50-100/7501>\
**Category:** Aiuto\
**Created:** [21 Giugno 2022, 12:49pm UTC](https://forum.olinfo.it/t/tieni-aggiornato-il-catalogo-algobadge-50-100/7501 "2022-06-21T12:49:19Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![danieledellef](https://forum.olinfo.it/letter_avatar_proxy/v4/letter/d/c0e974/32.png) [@danieledellef](https://forum.olinfo.it/u/danieledellef)\
**Post date:** [21 Giugno 2022, 12:49pm UTC](https://forum.olinfo.it/t/tieni-aggiornato-il-catalogo-algobadge-50-100/7501/1 "2022-06-21T12:49:20Z")

</div>

Salve, sto provando a risolvere il problema “Tieni aggiornato il catalogo”, il codice è molto facile, ma nonostante questo ottengo solo 50/100 punti per Execution timed out, qualche consiglio per ottimizzarlo?

```auto
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

vector<long long int> v;
void aggiungi(long long int id) {
    v.push_back(id);
}

void togli(long long int id) {
    v.erase(find(v.begin(), v.end(), id));
}

int conta(long long int id) {
        return count(v.begin(), v.end(), id);
}

```

---

<div class="post-metadata">

**Author:** ![v.bizzarri](https://forum.olinfo.it/letter_avatar_proxy/v4/letter/v/7c8e57/32.png) [@v.bizzarri](https://forum.olinfo.it/u/v.bizzarri)\
**Post date:** [21 Giugno 2022, 2:14pm UTC](https://forum.olinfo.it/t/tieni-aggiornato-il-catalogo-algobadge-50-100/7501/2 "2022-06-21T14:14:38Z")

</div>

Ci sono vari topic a riguardo ad esempio [Catalogo Compilazione Fallita](https://forum.olinfo.it/t/catalogo-compilazione-fallita/7415)

---

<div class="post-metadata">

**Author:** ![OrlandoRossi](https://forum.olinfo.it/user_avatar/forum.olinfo.it/orlandorossi/32/2802_2.png) [@OrlandoRossi](https://forum.olinfo.it/u/OrlandoRossi)\
**Post date:** [13 Gennaio 2026, 10:12am UTC](https://forum.olinfo.it/t/tieni-aggiornato-il-catalogo-algobadge-50-100/7501/3 "2026-01-13T10:12:24Z")

</div>

Ciao, io sto facendo lo stesso problema (catalogo) e penso di aver trovato una soluzione, ma ottengo 50/100 perché il case 029 e 031 hanno il risultato sbagliato.

Sto usando ‘map’ perché mi sembra la struttura di dati più adeguata, essendo che posso accedere agli elementi senza l’utilizzo di cicli vari; se usavo un vettore avrei dovuto fare una ricerca lineare ogni volta che cercavo di accedere agli scaffali.

Qui il codice:

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

map <int, int> M;

void aggiungi(long long int id) {
	if (M[id] == 0) M[id] = 1;
	else M[id]++;
	// M[id] = M[id] == 0 ? 1 : M[id] + 1;
}

void togli(long long int id) {
	M[id] = M[id] - 1;
}

int conta(long long int id) {
	return M[id];
}

```

---

<div class="post-metadata">

**Author:** ![MyK\_00L](https://forum.olinfo.it/user_avatar/forum.olinfo.it/myk_00l/32/3000_2.png) [@MyK\_00L](https://forum.olinfo.it/u/MyK_00L)\
**Post date:** [13 Gennaio 2026, 10:59am UTC](https://forum.olinfo.it/t/tieni-aggiornato-il-catalogo-algobadge-50-100/7501/4 "2026-01-13T10:59:13Z")

</div>

Stai usando una mappa con `int` (32 bit) quando il tipo del problema e’ `long long int` (64 bit) (in c++ non ti da warning a meno che non abiliti `-Wconversion`)

---

<div class="post-metadata">

**Author:** ![AlessandroBelia](https://forum.olinfo.it/user_avatar/forum.olinfo.it/alessandrobelia/32/2507_2.png) [@AlessandroBelia](https://forum.olinfo.it/u/AlessandroBelia)\
**Post date:** [13 Gennaio 2026, 8:00pm UTC](https://forum.olinfo.it/t/tieni-aggiornato-il-catalogo-algobadge-50-100/7501/5 "2026-01-13T20:00:17Z")

</div>

La `std::map` è una buona idea, ma non ci serve avere la struttura ordinata, sarebbe più adatta una `std::unordered_map`. Queste sono solo piccolezze, comunque il problema era l’overflow.  
Se ti interessa, anche nelle mappe puoi usare gli operatori `++` e `--`: se non esiste nessun elemento alla chiave `id` con il `++` viene aggiunto con valore 1. Poi per il `--` è garantito che non devi togliere da nessuno scaffale vuoto e in questo caso il problema non si pone.

---

<div class="post-metadata">

**Author:** ![OrlandoRossi](https://forum.olinfo.it/user_avatar/forum.olinfo.it/orlandorossi/32/2802_2.png) [@OrlandoRossi](https://forum.olinfo.it/u/OrlandoRossi)\
**Post date:** [15 Gennaio 2026, 7:12am UTC](https://forum.olinfo.it/t/tieni-aggiornato-il-catalogo-algobadge-50-100/7501/6 "2026-01-15T07:12:05Z")

</div>

Grazie mille! Dovrei stare più attento alle istruzioni del problema la prossima volta

---

<div class="post-metadata">

**Author:** ![OrlandoRossi](https://forum.olinfo.it/user_avatar/forum.olinfo.it/orlandorossi/32/2802_2.png) [@OrlandoRossi](https://forum.olinfo.it/u/OrlandoRossi)\
**Post date:** [15 Gennaio 2026, 7:15am UTC](https://forum.olinfo.it/t/tieni-aggiornato-il-catalogo-algobadge-50-100/7501/7 "2026-01-15T07:15:32Z")

</div>

Grazie! Alla fine ho usato la `std::map` perché era la prima struttura dati che mi era venuta in mente; avevo provato ad utilizzare la `std::unordered_map`, ma mi dava problemi con la compilazione e non avevo voglia di rifare il codice anche se corto :P.  
Grazie anche per il `++` e il `--`, lo terrò da conto la prossima volta che userò il C++
