Pagini recente » Cod sursa (job #3157372) | Cod sursa (job #2980964) | Cod sursa (job #2894552) | Cod sursa (job #168524) | Cod sursa (job #1317596)
#include<fstream>
#include<vector>
#define lld long long
#define MOD 1000000
using namespace std;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
struct Elem {
lld val;
Elem *next;
Elem(lld v) {
val = v;
next = NULL;
}
};
typedef Elem* List;
typedef Elem* pnod;
List h[MOD];
pnod sf[MOD];
void add(lld x) {
if(h[x%MOD] == NULL) {
h[x%MOD] = new Elem(x);
sf[x%MOD] = h[x%MOD];
return;
}
for(pnod p=h[x%MOD]; p; p=p->next) {
if(p->val == x) return;
}
sf[x%MOD]->next = new Elem(x);
sf[x%MOD] = sf[x%MOD] -> next;
}
void del(lld x) {
pnod last;
if(h[x%MOD] == NULL) return;
if(h[x%MOD] -> val == x) {
pnod p = h[x%MOD];
h[x%MOD] = h[x%MOD] -> next;
delete p;
return;
}
for(pnod p=h[x%MOD]; p; last = p, p=p->next) {
if(p->val == x) {
last->next = p->next;
delete p;
return;
}
}
}
bool check(lld x) {
for(pnod p=h[x%MOD]; p; p=p->next) {
if(p->val == x) return true;
}
return false;
}
int main() {
int q, type;
fin>>q;
lld x;
while(q--) {
fin>>type>>x;
switch(type) {
case 1: add(x);break;
case 2: del(x); break;
case 3: fout<<check(x)<<'\n'; break;
}
}
}