Pagini recente » Cod sursa (job #1512030) | Cod sursa (job #2716760) | Cod sursa (job #2244248) | Cod sursa (job #1267414) | Cod sursa (job #911174)
Cod sursa(job #911174)
#include<cstdio>
#define mod1 66601
#define mod2 39199
class HashTab
{
int H[mod1];
public:
HashTab();
void insert(int ,int );
void remove(int );
int find(int );
};
HashTab::HashTab()
{
for(int i=0;i<mod1;i++)
H[i]=0;
}
void HashTab::insert(int x,int ex=0)
{
int pos=x%mod1;
if(ex!=0 && H[pos]==ex) pos=x%mod2;
if(H[pos]==0 || H[pos]==x)
{
H[pos]=x;
return;
}
else
{
int y=H[pos];
H[pos]=x;
insert(y,x);
}
}
void HashTab::remove(int x)
{
int pos;
pos=x%mod1;if(H[pos]==x) H[pos]=0;
pos=x%mod2;if(H[pos]==x) H[pos]=0;
}
int HashTab::find(int x)
{
if(H[x%mod1]==x || H[x%mod2]==x) return 1;
return 0;
}
int main()
{
FILE *f=fopen("hashuri.in", "r"),*g=fopen("hashuri.out", "w");
HashTab Hash;
int n,i,op,x;
fscanf(f,"%d",&n);
for(i=0;i<n;i++)
{
fscanf(f,"%d%d",&op,&x);
if(op==1) Hash.insert(x);
else if(op==2) Hash.remove(x);
else if(op==3) fprintf(g,"%d\n",Hash.find(x));
}
return 0;
}