Pagini recente » Cod sursa (job #1119368) | Cod sursa (job #388715) | Cod sursa (job #3221387) | Cod sursa (job #487515) | Cod sursa (job #2280576)
#include <iostream>
#include <cstdio>
#define MOD 666019
using namespace std;
const int MAXN = 1000001;
class Hashuri{
public:
int lista[MOD];
int next[MAXN];
int val[MAXN];
int k;
void insert(int element){
k++;
next[element]=lista[element%MOD];
val[k]=element;
lista[element%MOD]=k;
}
int find(int element){
int p=lista[element%MOD];
while(p!=0 && val[p]!=element)
p=next[p];
return p;
}
void erase(int element){
int p=lista[element%MOD];
if(p==0)
return;
else if(val[p]==element){
lista[element%MOD]=next[p];
return;
}
while(next[p]!=0 && val[next[p]]!=element)
p=next[p];
if(next[p]!=0)
next[p]=next[next[p]];
}
}H;
int main()
{
FILE *fin, *fout;
int n,i,tip,val;
fin=fopen("hashuri.in","r");
fout=fopen("hashuri.out","w");
fscanf(fin,"%d",&n);
for(i=1;i<=n;i++){
fscanf(fin,"%d %d",&tip,&val);
if(tip==1 && !H.find(val))
H.insert(val);
else if(tip==2)
H.erase(val);
else if(tip==3)
fprintf(fout,"%d\n",(H.find(val)>0));
}
fclose(fin);
fclose(fout);
return 0;
}