Cod sursa(job #1837256)

Utilizator alexandrutarcanTarcan Alexandru alexandrutarcan Data 29 decembrie 2016 13:23:59
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include <fstream>
#include <vector>
#include<algorithm>
#define MOD 801701
using namespace std;

vector<int> m[801701];

void add(int nr);
void elim(int nr);
int cauta(int nr);

int main()
{
    ifstream fin("hashuri.in");
    ofstream fout("hashuri.out");
    int n,op,nr;
    fin >> n;
    for(int i = 0; i < n; i++)
    {
        fin >> op >> nr;
        switch(op)
        {
            case 1:
                add(nr);
                break;
            case 2:
                elim(nr);
                break;
            default:
                fout << cauta(nr)<<'\n';
        }
    }
    return 0;
}
void add(int nr)
{
    int key=nr%MOD;
    vector<int>::iterator boss = find(m[key].begin(), m[key].end(), nr);
    if(boss == m[key].end())
        m[key].push_back(nr);
}
void elim(int nr)
{
    int key=nr%MOD;
    vector<int>::iterator boss = find(m[key].begin(), m[key].end(), nr);
    if(boss != m[key].end())
    {
        *boss = m[key].back();
        m[key].pop_back();
    }
}
int cauta(int nr)
{
    int key=nr%MOD;
    vector<int>::iterator boss = find(m[key].begin(), m[key].end(), nr);
    if(boss != m[key].end())
        return 1;
    return 0;
}