Cod sursa(job #1922482)

Utilizator george_stelianChichirim George george_stelian Data 10 martie 2017 17:38:34
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <cstdio>

using namespace std;

const int prim=101,mod=1<<21;
int v[mod];

void inc(int &a)
{
    if(++a==mod) a=0;
}

int hash_find(int x)
{
    int a=(1LL*x*prim)%mod;
    for(;v[a];a++)
        if(v[a]==x) return a;
    return -1;
}

void hash_insert(int x)
{
    if(hash_find(x)!=-1) return;
    int a=(1LL*x*prim)%mod;
    for(;v[a]>0;a++);
    v[a]=x;
}

void hash_erase(int x)
{
    int poz=hash_find(x);
    if(poz>=0) v[poz]=-1;
}

int main()
{
    freopen("hashuri.in", "r", stdin);
    freopen("hashuri.out", "w", stdout);
    int n,tip,x;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d%d",&tip,&x);
        if(tip==1) hash_insert(x);
        else if(tip==2) hash_erase(x);
        else if(hash_find(x)==-1) printf("0\n");
        else printf("1\n");
    }
    return 0;
}