Pagini recente » Rating Solovan Ilarion (iraziel) | Rating Dobrescu Adrian Marius (rembrand) | Rating Rodica Toma (rodica_toma) | Cod sursa (job #2961717) | Cod sursa (job #2405102)
#include <iostream>
#include <fstream>
#define M 666013
using namespace std;
struct node
{
bool ex = 0;
int number;
node *next;
};
node *table[M];
void add(int val)
{
int temp = val % M;
node*& nod = table[temp];
if (nod == nullptr)
{
nod = new node;
nod->ex = 1;
nod->number = val;
nod->next = nullptr;
}
else
{
if (nod->number == val)
return;
node* it;
for (it = nod; it->next != nullptr; it = it->next)
{
if (it->number == val)
return;
}
it->next = new node;
it->next->ex = 1;
it->next->number = val;
it->next->next = nullptr;
}
}
void del(int val)
{
int temp = val % M;
node*& nod = table[temp];
if (nod == nullptr)
{
return;
}
else
{
if (nod->number == val)
{
delete nod;
nod = nullptr;
return;
}
node *it;
for (it = nod; it->next != nullptr; it = it->next)
{
if (it->next->number == val)
{
node* tnode = it->next;
it->next = tnode->next;
delete tnode;
return;
}
}
}
}
bool ext(int val)
{
int temp = val % M;
node*& nod = table[temp];
if (nod == nullptr)
{
return false;
}
else
{
if (nod->number == val)
{
return true;
}
node *it;
for (it = nod; it->next != nullptr; it = it->next)
{
if (it->number == val)
{
return true;
}
}
}
return false;
}
int main()
{
ifstream in;
in.open("hashuri.in");
ofstream out;
out.open("hashuri.out");
int n, op, val;
in >> n;
for (int i = 0; i < n; ++i)
{
in >> op >> val;
switch (op)
{
case 1:
add(val);
break;
case 2:
del(val);
break;
case 3:
out << ext(val) << '\n';
break;
}
}
in.close();
out.close();
}