Pagini recente » Cod sursa (job #1257061) | Cod sursa (job #625214) | Cod sursa (job #2116810) | Cod sursa (job #2232700) | Cod sursa (job #1196903)
#include <stdio.h>
#define MAXN 1000000
#define MOD 666013
int val[MAXN], next[MAXN], lista[MOD];
inline void adauga(int p, int x){
val[p]=x;
next[p]=lista[x%MOD];
lista[x%MOD]=p;
}
inline void sterge(int x){
int p;
p=lista[x%MOD];
if(val[p]==x){
lista[x%MOD]=next[lista[x%MOD]];
}else{
while((next[p]!=0)&&(val[next[p]]!=x)){
p=next[p];
}
if(val[next[p]]==x){
next[p]=next[next[p]];
}
}
}
inline int cauta(int x){
int p, rez;
p=lista[x%MOD];
while((p!=0)&&(val[p]!=x)){
p=next[p];
}
if(p==0){
rez=0;
}else{
rez=1;
}
return rez;
}
int main(){
int n, i, t, x;
FILE *fin, *fout;
fin=fopen("hashuri.in", "r");
fout=fopen("hashuri.out", "w");
fscanf(fin, "%d", &n);
for(i=1; i<=n; i++){
fscanf(fin, "%d%d", &t, &x);
if(t==1){
if(cauta(x)==0){
adauga(i, x);
}
}else if(t==2){
sterge(x);
}else{
fprintf(fout, "%d\n", cauta(x));
}
}
fclose(fin);
fclose(fout);
return 0;
}