Cod sursa(job #658977)

Utilizator StefanLacheStefan Lache StefanLache Data 9 ianuarie 2012 20:51:56
Problema Hashuri Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include<stdio.h>
#include<vector>
#define M 666013
using namespace std;
int n;
vector<int> H[M];
inline vector<int>::iterator gaseste(int x)
{
    int lista=x%M;
    vector<int>::iterator i;
    for(i=H[lista].begin();i!=H[lista].end();++i)
        if(*i==x)
            return i;
    return H[lista].end();
}
inline void insereaza(int x)
{
    int lista=x%M;
    if(gaseste(x)==H[lista].end())
        H[lista].push_back(x);
}
inline void sterge(int x)
{
    int lista=x&M;
    vector<int>::iterator i=gaseste(x);
    if(i!=H[lista].end())
        H[lista].erase(i);
}
int main()
{
    freopen("hashuri.in","rt",stdin);
    freopen("hashuri.out","wt",stdout);
    int op,x,i;
    scanf("%i",&n);
    for(i=0;i<n;i++)
    {
        scanf("%i%i",&op,&x);
        if(op==1)
                {
                    insereaza(x);
                    continue;
                }
        if(op==2)
                {
                    sterge(x);
                    continue;
                }
        printf("%i\n",gaseste(x)!=H[x%M].end());
    }
    return 0;
}