Pagini recente » Cod sursa (job #2933736) | Cod sursa (job #2826643) | Cod sursa (job #838110) | Rating Daniela-Georgiana (trandadani) | Cod sursa (job #1994864)
#include <fstream>
using namespace std;
#define MAX 104729
struct Node {
int value;
Node* next;
Node(int _value, Node* _next = NULL) : value{ _value }, next{ _next }
{
}
};
class Set {
public:
Set() : m(MAX)
{
for (int i = 0; i < m; ++i)
t[i] = NULL;
}
int d(int i)
{
return i % m;
}
void add_value(int value)
{
if (find_value(value))
return;
int poz = d(value);
Node* node = new Node(value, t[poz]);
t[poz] = node;
}
void delete_value(int value)
{
int poz = d(value);
Node* node = t[poz];
if (node != NULL && node->value == value)
{
t[poz] = node->next;
delete node;
return;
}
while (node != NULL)
{
if (node->next != NULL && node->next->value == value)
{
Node* aux = node->next;
node->next = node->next->next;
delete aux;
return;
}
node = node->next;
}
}
bool find_value(int value)
{
int poz = d(value);
Node* node = t[poz];
while (node != NULL)
{
if (node->value == value)
return true;
node = node->next;
}
return false;
}
private:
int m;
Node* t[MAX];
};
int main()
{
int op, type, x;
Set s;
ifstream is("hashuri.in");
ofstream os("hashuri.out");
is >> op;
while (op--)
{
is >> type >> x;
switch (type)
{
case 1:
s.add_value(x);
break;
case 2:
s.delete_value(x);
break;
default:
os << s.find_value(x) << "\n";
break;
}
}
is.close();
os.close();
return 0;
}