Pagini recente » Cod sursa (job #59754) | Cod sursa (job #2311026) | Cod sursa (job #557377) | Cod sursa (job #646663) | Cod sursa (job #2027322)
#include<cstdio>
#define MOD 666013
using namespace std;
struct node
{
int val;
node* next;
};
node* Hash[MOD];
inline int h(int key)
{
return key % MOD;
}
inline void insertElem(int key)
{
int val = h(key);
node* elem = new node;
elem->val = key;
elem->next = Hash[val];
Hash[val] = elem;
}
inline void deleteElem(int key)
{
int val = h(key);
node* p, *q;
if(Hash[val]->val == key)
{
q = Hash[val];
Hash[val] = Hash[val]->next;
delete q;
}
else
{
p = Hash[val];
while(p->next->val != key)
p = p->next;
q = p->next;
p->next = p->next->next;
delete q;
}
}
inline bool searchElem(int key)
{
int val = h(key);
node* p = Hash[val];
while(p != NULL && p->val != key)
p = p->next;
return (p != NULL) ? 1 : 0;
}
int main()
{
int n, x, i, op;
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);
switch(op)
{
case 1 : if(!searchElem(x)) insertElem(x); break;
case 2 : if(searchElem(x)) deleteElem(x); break;
case 3 : fprintf(fout,"%d\n",searchElem(x)); break;
}
}
fclose(fin);
fclose(fout);
return 0;
}