Cod sursa(job #315984)

Utilizator warchildmdMihail Burduja warchildmd Data 17 mai 2009 21:48:13
Problema Hashuri Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include<stdio.h>
#include<list>
#include<vector>
using namespace std;

vector<int> H[666013];

inline vector<int>::iterator find_value(int v)
{
    int h = v % 666013;
    vector<int>::iterator it;

    for (it = H[h].begin(); it != H[h].end(); ++it)
        if (*it == v)
            return it;
    return H[h].end();
}

inline void insert(int v)
{
    int h;
    h=v%666013;
    if(find_value(v)==H[h].end())
    H[h].push_back(v);
}

inline void del(int v)
{
    int h;
    h=v%666013;
    vector<int>::iterator it=find_value(v);
    if(it!=H[h].end())
    H[h].erase(it);
}

int find(int v)
{
    int h=v%666013;
    for(vector<int>::iterator it=H[h].begin(); it != H[h].end(); ++it)
    if( *it == v) return 1;
    return 0;
}

int main()
{
    int N, x;
    int v;
    freopen("hashuri.in","r",stdin);
    freopen("hashuri.out","w",stdout);
    scanf("%d\n",&N);
    for(;N;N--)
    {
        scanf("%d %ld",&x,&v);
        if(x==1)
        insert(v);
        else if(x==2)
        del(v);
        else if(x==3)
        printf("%d\n",find(v));
    }
    return 0;
}