Mai intai trebuie sa te autentifici.
Cod sursa(job #381522)
Utilizator | Data | 10 ianuarie 2010 20:40:59 | |
---|---|---|---|
Problema | Hashuri | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.73 kb |
#include<cstdio>
int a[1001000][2],s[699050],p=699037,q;
int cauta(int k)
{
int r=k%p,t,poz;
t=s[r];
poz=0;
while(t&&!poz)
if(a[t][0]==k)
poz=t;
else
t=a[t][1];
return poz;
}
void adauga(int k)
{
int r=k%p,poz;
poz=cauta(k);
if(!poz)
{
a[++q][0]=k;
a[q][1]=s[r];
s[r]=q;
}
}
void sterge(int k)
{
int poz;
poz=cauta(k);
if(poz)
a[poz][0]=-k;
}
int main()
{
int i,n,op,x;
freopen("hashuri.in","rt",stdin);
freopen("hashuri.out","wt",stdout);
scanf("%d",n);
for(i=1;i<=n;i++)
{
scanf("%d%d",op,x);
if(op==1)
adauga(x);
else
if(op==2)
sterge(x);
else
if(cauta(x))
printf("1\n");
else
printf("0\n");
}
return 0;
}