Pagini recente » Cod sursa (job #1591200) | Cod sursa (job #1932436) | Cod sursa (job #319511) | Cod sursa (job #1267541) | Cod sursa (job #2623658)
#include <fstream>
#include <vector>
#define P 660013
using namespace std;
class lista
{
private:
class nod
{
public:
long long nr;
nod *urm;
};
nod *cap, *coada;
public:
lista()
{
cap = nullptr;
coada = nullptr;
}
void adaug(long long n)
{
nod *tmp = new nod;
tmp->nr = n;
tmp->urm = nullptr;
if(cap==nullptr)
{
cap = coada = tmp;
}
else
{
coada->urm = tmp;
coada=coada->urm;
}
}
void sterg(long long val)
{
if(cap!=nullptr)
{
nod *p=cap;
while(p->urm!=nullptr)
{
if(p->nr==val)
{
p->nr=-1;
}
p=p->urm;
}
if(p!=nullptr && p->nr==val)
{
p->nr=-1;
}
}
}
bool exista(long long val)
{
if(cap==nullptr)
{
return false;
}
nod *p=cap;
while(p->urm!=nullptr)
{
if(p->nr==val)
{
return true;
}
p=p->urm;
}
if(p!=nullptr && p->nr==val)
{
return true;
}
return false;
}
};
class mapp
{
private:
lista L[P];
public:
void adaug(long long val)
{
L[val%P].adaug(val);
}
void sterg(long long val)
{
L[val%P].sterg(val);
}
bool exista(long long val)
{
return L[val%P].exista(val);
}
} M;
int main()
{
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
int n,op;
long long x;
fin>>n;
for(int i=0; i<n; i++)
{
fin>>op>>x;
if(op==1)
{
M.adaug(x);
}
else if(op==2)
{
M.sterg(x);
}
else if(op==3)
{
fout<<M.exista(x)<<'\n';
}
}
return 0;
}