Cod sursa(job #1253473)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 1 noiembrie 2014 13:21:20
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include<cstdio>
#include<vector>
#define MOD 666013
using namespace std;
int n;
vector <int> H[MOD];
vector <int>::iterator it;
 
inline bool Found(int x)
{
    int poz=x%MOD;
    for(it=H[poz].begin();it!=H[poz].end();it++)
        if(*it==x)
            return 1;
    return 0;
}
 
inline void Adaugare(int x)
{
    if(!Found(x))
    {
        int poz=x%MOD;
        for(it=H[poz].begin();it!=H[poz].end();it++)
            if(*it==-1)
            {
                *it=x;
                return;
            }
        H[poz].push_back(x);
    }
}
 
inline void Stergere(int x)
{
    if(Found(x))
    {
        int poz=x%MOD;
        for(it=H[poz].begin();it!=H[poz].end();it++)
            if(*it==x)
            {
                *it=-1;
                return;
            }
    }
}
 
int main()
{
    int i,op,x;
    freopen("hashuri.in","r",stdin);
    freopen("hashuri.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d %d",&op,&x);
        if(op==1)
            Adaugare(x);
        else
            if(op==2)
                Stergere(x);
            else
                printf("%d\n",Found(x));
    }
    return 0;
}