# PBinfo #2217 – Map – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

Domnul Map vă pune la dispoziție un șir a[1], a[2], …, a[n] de numere naturale.

Cerința
Pentru fiecare a[i] (i=1..n) trebuie să spuneți de câte ori apare acest element în secvența a[1], a[2], …, a[i].

Date de intrare
Fișierul de intrare map.in conține pe prima linie numărul n. Pe linia a doua, separate prin câte un spațiu, sunt elementele șirului.

Date de ieșire
În fișierul de ieșire map.out se vor afișa pe primul rând n numere naturale, al i-lea număr reprezentând numărul de apariții ale lui a[i] în secvența a[1], a[2], …, a[i].

Restricții și precizări

1 ≤ n ≤ 200 000
0 <= a[i] <= 1018

Exemplu:
map.in

7
1 9876543210 1 3 3 9876543210 9876543210
map.out

1 1 2 1 2 2 3
Explicație
Primul element este 1. Apare o singură dată până acum.
Al doilea element este 9876543210. Și el apare pentru prima dată.
Al treilea element este 1. Apare a doua oară.
Al patrulea element este 3. Apare prima oară.
Al cincilea element este 3. Apare a doua oară.
Al șaselea element este 9876543210. Apare a doua oară.
Al șaptelea element este 9876543210. Apare a treia oară.

## Cod sursă C++

```cpp
#include <bits/stdc++.h>
using namespace std;
map<long long, int> M;
int main()
{
    int i, N;
    long long x;
    ifstream  fin("map.in");
    ofstream fout("map.out");
    fin >> N;
    for (i = 1; i <= N; i++)
    {
        fin >> x;
        M[x]++;
        fout << M[x] << " ";
    }
    fout << "\n";
    fout.close();
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/2217)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/2217/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-2217/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
