Mai intai trebuie sa te autentifici.
Cod sursa(job #1771879)
Utilizator | Data | 6 octombrie 2016 09:32:11 | |
---|---|---|---|
Problema | Hashuri | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.85 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","r",stdin);
freopen("hashuri","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");
else printf("1");
}
}
}