Pagini recente » Cod sursa (job #2802531) | Cod sursa (job #1882645) | Cod sursa (job #2114014) | Cod sursa (job #2870839) | Cod sursa (job #766790)
Cod sursa(job #766790)
#include <iostream>
#include <fstream>
#include <vector>
#define dim 1300021
int table[dim];
int hash(int key,int i)
{
return (key+3*i+5*i*i)%dim;
}
int insert(int key)
{
for (int i=0;i<dim;i++)
{
int ind = hash(key,i);
if (table[ind]<0)
{
table[ind] = key;
return ind;
}
}
return -1;
}
int search(int key)
{
for (int i=0;i<dim;i++)
{
int ind = hash(key,i);
if (table[ind]==-1)
return -1;
else
if (table[ind]==key)
return ind;
}
return -1;
}
void sterge(int key)
{
int ind = search(key);
if (ind!=-1)
table[ind] = -2;
}
using namespace std;
int main()
{
FILE *f = fopen("hashuri.in","r");
FILE *g = fopen("hashuri.out","w+");
int n;
fscanf(f,"%d",&n);
for (int i=0;i<dim;i++)
table[i]=-1;
for (int i=0;i<n;i++)
{
int op,x;
fscanf(f,"%d", &op);
fscanf(f,"%d", &x);
switch (op)
{
case 1:
{
insert(x);
break;
}
case 2:
{
sterge(x);
break;
}
case 3:
{
int ind = search(x);
if (ind<0)
fprintf(g,"%d\n",0);
else
fprintf(g,"%d\n",1);
break;
}
default:
break;
}
}
fclose(g);
fclose(f);
}