Cod sursa(job #1098367)

Utilizator Juve45UAIC Alexandru Ionita Juve45 Data 4 februarie 2014 19:21:49
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include <cstdio>
#include <vector>
#include <iostream>

using namespace std;

vector <int> h[399000];

#define d 394677
#define pb push_back

int key(int x)
{
    return x%d;
}

void update_hash(int x)
{
    int k=key(x);
    int ok=0;
    for(int i=0; i<h[k].size() && ok==0; i++)
    {
        if(h[k][i]==x) ok++;
    }
    if(ok==0)
        h[k].pb(x);

}

void delete_hash(int x)
{

    int k=key(x);
    for(int i=0; i<h[k].size(); i++)
    {
        if(h[k][i]==x)
            {
            swap(h[k][i],h[k][h[k].size()-1]);
                h[k].pop_back();
            }
    }
}

int query_hash(int x)
{

    int k=key(x);
    for(int i=0; i<h[k].size(); i++)
        if(h[k][i]==x)
           return 1;
    return 0;
}

int main()
{
    freopen("hashuri.in", "r", stdin);
    freopen("hashuri.out", "w", stdout);
int n, a, b;
scanf("%i", &n);
for(int i=1;i<=n;i++)
{
    scanf("%i %i", &a, &b);
    if(a==1)
        update_hash(b);
            if(a==2)
        delete_hash(b);
            if(a==3)
        printf("%i\n", query_hash(b));
}
    return 0;
}