Pagini recente » Cod sursa (job #1688654) | Cod sursa (job #1410237) | Cod sursa (job #429997) | Cod sursa (job #2095741) | Cod sursa (job #1494072)
#include<fstream>
#define DELIM 44357
using namespace std;
struct Node
{
Node *next;
int val;
};
Node *h[44357];
void add(int e,int val)
{
Node *p = new Node;
p->next = h[e];
p->val = val;
h[e] = p;
}
void remove(int e, int val)
{
Node *p,*q;
p = h[e];
if (!p)
return;
if (p->val == val)
{
q = h[e];
h[e] = p->next;
delete q;
return;
}
while (p->next)
{
if (p->next->val == val)
{
q = p->next;
p->next = q->next;
delete q;
return;
}
p = p->next;
}
return;
}
int find(int e, int val)
{
Node *p=h[e];
while (p)
{
if (p->val == val)
return 1;
p = p->next;
}
return 0;
}
int inline Hash(int e)
{
return e % DELIM;
}
int main()
{
ifstream f_in("hashuri.in");
ofstream f_out("hashuri.out");
int N,op,val;
f_in >> N;
for (int i = 1;i <= N;++i)
{
f_in >> op;
f_in >> val;
if (op == 1)
{
int e = Hash(val);
if (!find(e, val))
add(e, val);
}
else if (op == 2)
{
remove(Hash(val), val);
}
else
{
f_out << find(Hash(val), val)<<'\n';
}
}
f_in.close();
f_out.close();
return 0;
}