Pagini recente » Cod sursa (job #1390901) | Cod sursa (job #1521194) | Cod sursa (job #2668215) | Cod sursa (job #874452) | Cod sursa (job #1960249)
#include <iostream>
#include <fstream>
#define mod 666013
using namespace std;
ifstream f("hashuri.in");
ofstream g("hashuri.out");
int n,i,j,val[1000001],urm[1000001],lst[mod+5],nr[1000001],nh,op,x;
int cauta(int x)
{
int r=x%mod,p;
p=lst[r];
while(p!=0)
{
if(val[p]==x) return p;
p=urm[p];
}
return 0;
}
void adauga(int x)
{
int p=cauta(x);
if(p!=0)
{
nr[p]++;
return;
}
int r=x%mod;
++nh;
val[nh]=x;
nr[nh]=1;
urm[nh]=lst[r];
lst[r]=nh;
}
void sterge(int x)
{
int p=lst[x%mod];
if(val[p]==x)
{
nr[p]--;
if(nr[p]==0) lst[x%mod]=urm[p];
return;
}
while(urm[p]!=0 && val[urm[p]]!=x) p=urm[p];
}
int main()
{
f>>n;
for(i=1;i<=n;i++)
{
f>>op>>x;
if(op==1)
{
adauga(x);
}
else if(op==2)
{
sterge(x);
}
else if(op==3)
{
if(cauta(x)) g<<1<<'\n';
else g<<0<<'\n';
}
}
return 0;
}