Pagini recente » Cod sursa (job #2569249) | Cod sursa (job #2142871) | Cod sursa (job #1154219) | Cod sursa (job #1971730) | Cod sursa (job #1926072)
#include<cstdio>
const int MOD = 666013;
using namespace std;
struct lista
{
int val;
lista *next;
};
lista *Hash[MOD];
inline int h(int k)
{
return k % MOD;
}
int Search(int k)
{
lista *l = Hash[h(k)];
while(l != NULL && l->val != k)
l = l->next;
if(l == NULL)
return 0;
return 1;
}
void Insert(int k)
{
lista *elem = new lista;
elem->val = k;
elem->next = Hash[h(k)];
Hash[h(k)] = elem;
}
void Delete(int k)
{
lista *l = Hash[h(k)];
if(l->val == k)
Hash[h(k)] = l->next;
else
{
while(l->next->val != k)
l = l->next;
l->next = l->next->next;
}
}
int main()
{
int x, op, i, n;
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",&op,&x);
if(op == 1)
{
if(!Search(x))
Insert(x);
}
if(op == 2)
{
if(Search(x))
Delete(x);
}
if(op == 3)
{
if(Search(x))
fprintf(fout,"1\n");
else fprintf(fout,"0\n");
}
}
fclose(fin);
fclose(fout);
return 0;
}