Pagini recente » Cod sursa (job #344453) | Cod sursa (job #3278886) | Cod sursa (job #184710) | Cod sursa (job #2381402) | Cod sursa (job #1960251)
#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 && nr[p]>0) 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;
}