Pagini recente » Cod sursa (job #2233431) | Cod sursa (job #222778) | Cod sursa (job #2079426) | Cod sursa (job #1279414) | Cod sursa (job #1517705)
#include <stdio.h>
#define lim 1000001
#define MOD 666019
#define NUL -1
int val[lim],nxt[lim],lista[MOD],k=0;
int cauta(int x){
int pp,poz;
pp=0;
poz=lista[x%MOD];
while(poz!=NUL&&pp==0){
if(val[poz]==x)
pp=poz;
poz=nxt[poz];
}
return pp;
}
void adauga(int x){
if(cauta(x)==0){
k++;
val[k]=x;
nxt[k]=lista[x%MOD];
lista[x%MOD]=k;
}
}
void sterge(int x){
int ante,poz,pp;
/*poz=cauta(x);
val[poz]=NUL;*/
ante=0;
poz=lista[x%MOD];
while(nxt[poz]!=NUL&&pp==0){
if(val[poz]==x)
pp=poz;
ante=poz;
poz=nxt[poz];
}
if(ante!=0){
nxt[ante]=nxt[poz];
}
else
lista[x%MOD]=NUL;
val[poz]=NUL;
nxt[poz]=NUL;
}
int main(){
FILE *fin,*fout;
fin=fopen("hashuri.in","r");
fout=fopen("hashuri.out","w");
int i,n,x,cer;
fscanf(fin,"%d",&n);
for(i=0;i<MOD;i++)
nxt[i]=NUL;
for(i=1;i<=n;i++){
fscanf(fin,"%d%d",&cer,&x);
if(cer==1)
adauga(x);
if(cer==2)
sterge(x);
if(cer==3)
if(cauta(x)!=0)
fprintf(fout,"1\n");
else
fprintf(fout,"0\n");
}
fclose(fin);
fclose(fout);
return 0;
}