# PBinfo #2224 – mset – Rezolvare C++

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

## Enunț

Se consideră un șir A, inițial vid. Se definesc următoarele operații:


1 x – introduce valoarea x în șirul A
2 x – șterge toate aparițiile lui x din A (dacă x nu apare deloc în A, operația nu se execută)
3 – interogare: care este cea mai mică valoare din A și de câte ori apare (dacă A este șir vid, se va afișa doar valoarea -1)

Cerința
Dându-se N operații, trebuie să afișați răspunsul la fiecare operație de tip 3.

Date de intrare
Fișierul de intrare mset.in conține pe prima linie N. Pe următoarele N linii sunt date cele N operații.

Date de ieșire
În fișierul de ieșire mset.out se vor afișa pe câte o linie răspunsurile la operațiile de tip 3.

Restricții și precizări

1 ≤ N ≤ 200 000
Va exista cel puțin o operație de tip 3
Valorile care se introduc în mulțime sunt numere naturale mai mici decât 2 000 000 000

Exemplu:
mset.in

14
3
1 55
1 55
3
1 40
3
1 7
1 7
3
2 7 
1 50
3
2 40
3
mset.out

-1
55 2
40 1
7 2
40 1
50 1

## Cod sursă C++

```cpp
// Solutia bruta
#include <bits/stdc++.h>
using namespace std;
int a[200005], n, N, minim, cnt;
void Elimina(int x)
{
    int i, j = 0;
    for (i = 1; i <= n; i++)
        if (a[i] != x)
            a[++j] = a[i];
    n = j;
}
void Minim()
{
    cnt = 0; minim = 2000000001;
    for (int i = 1; i <= n; i++)
        if (a[i] < minim)
        {
            minim = a[i];
            cnt = 1;
        }
        else if (a[i] == minim) cnt++;
}
int main()
{
    int x, op;
    ifstream fin("mset.in");
    ofstream fout("mset.out");
    fin >> N;
    while (N--)
    {
        fin >> op;
        if (op == 1)
        {
            fin >> x;
            a[++n] = x;
        }
        else if (op == 2)
        {
            fin >> x;
            Elimina(x);
        }
        else /// op = 3
        {
            if (n == 0) fout << "-1\n";
            else
            {
                Minim();
                fout << minim << " " << cnt << "\n";
            }
        }
    }
    return 0;
}
```

## Resurse

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