Cod sursa(job #1540623)

Utilizator SoniaFlorinaHorchidan Sonia-Florina SoniaFlorina Data 2 decembrie 2015 23:12:15
Problema Hashuri Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include <iostream>
#include <fstream>
#include <vector>
#define M 666013

using namespace std;

ifstream in("hashuri.in");
ofstream out("hashuri.out");

vector <int> Hash[M];
long long  n, op, x;

void adauga(long long x)
{
    int ok=0;
    for(int i=0; i<Hash[x%M].size() && !ok; i++)
            if(Hash[x%M][i]==x)
                ok=1;
    if(!ok)
        Hash[x%M].push_back(x);
}

void sterge(long long x)
{
    int poz=-1,aux;
    for(int i=0; i<Hash[x%M].size(); i++)
        if(Hash[x%M][i]==x)
            poz=i;
    if(poz!=-1)
   {
        aux=Hash[x%M][poz];
        Hash[x%M][poz]=Hash[x%M][Hash[x%M].size()];
        Hash[x%M][Hash[x%M].size()]=aux;
        Hash[x%M].pop_back();
   }

}

bool exista(long long x)
{
    for(int i=0; i<Hash[x%M].size(); i++)
        if(Hash[x%M][i]==x)
            return 1;
    return 0;
}

int main()
{
    in>>n;
    for(int i=1; i<=n; i++)
    {
        in>>op>>x;
        if(op==1)
            adauga(x);
        else
            if(op==2)
                sterge(x);
            else
                out<<exista(x)<<'\n';
    }

    in.close();
    out.close();

    return 0;
}