Cod sursa(job #1771882)

Utilizator OlivianOlivian Dan Cretu Olivian Data 6 octombrie 2016 09:35:30
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<cstdio>
using namespace std;
const int prim=107,mod=1<<22;
int has[mod];
void in(int &po)
{
    if(++po==mod) po=0;
}
int fnd(int x)
{
    int po=(1LL*x*prim)%mod;
    for(;has[po]!=x && has[po]!=0;in(po));
    if(has[po]==x) return po;
    else return -1;
}
void add(int x)
{
    if(fnd(x)!=-1) return;
    int po=(1LL*x*prim)%mod;
    for(;has[po]!=x && has[po]>0;in(po));
    has[po]=x;

}
void ers(int x)
{
    int po=fnd(x);
    if(po!=-1) has[po]=-1;
}
int main()
{
    int n,op,x;
    freopen("hashuri.in","r",stdin);
    freopen("hashuri.out","w",stdout);
    scanf("%d ",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d %lld ",&op,&x);
        if(op==1) add(x);
        else if(op==2) ers(x);
        else {
                if(fnd(x)==-1) printf("0 \n");
                else printf("1 \n");
            }
    }
}