Pagini recente » Cod sursa (job #1351305) | Cod sursa (job #3273009) | Cod sursa (job #1653924) | Cod sursa (job #23599) | Cod sursa (job #1405249)
#include <bits/stdc++.h>
using namespace std;
ifstream f("hashuri.in");
ofstream g("hashuri.out");
class Node {
public:
int value;
Node *next;
Node(int x = 0) : value(x), next(NULL){}
static void add(int, Node *&);
static void del(int, Node *&);
static bool findInHash(int, Node *);
};
void Node::add(int x, Node * &node){
if(!node)
node = new Node(x);
else
if(node->value != x)
add(x, node->next);
}
void Node::del(int x, Node * &node){
if(!node)
return;
else {
if(node->value == x){
node = node->next;
return;
}
Node *prev, *cur;
prev = node;
cur = node->next;
while(cur){
if(cur -> value == x){
prev->next = cur -> next,
delete cur;
return;
}
prev = prev -> next;
cur = cur -> next;
}
}
}
bool Node::findInHash(int x, Node * node){
while(node){
if(node -> value == x)
return true;
node = node->next;
}
return false;
}
int main()
{
int n, x, type;
Node* h[666013] ;
for(int i = 0; i < 666013; ++i)
h[i] = NULL;
f>>n;
while(n--){
f>>type>>x;
switch(type){
case 1:
Node::add(x, h[x % 666013]);
break;
case 2:
Node::del(x, h[x % 666013]);
break;
case 3:
g<<Node::findInHash(x, h[x % 666013])<<'\n';
break;
}
}
return 0;
}