Pagini recente » Cod sursa (job #2348679) | Cod sursa (job #991456) | Cod sursa (job #1712029) | Monitorul de evaluare | Cod sursa (job #1443563)
#include <fstream>
using namespace std;
ifstream f("hashuri.in");
ofstream g("hashuri.out");
const int M=666019, N=1000001;
int lst[M],val[N],urm[N], nr=0;
void adauga(int x)
{
int r=x%M;
nr++;
val[nr]=x;
urm[nr]=lst[r];
lst[r]=nr;
}
bool cauta(int x)
{
int p=lst[x%M];
while(p)
{
if(val[p]==x)
return true;
p=urm[p];
}
return false;
}
void sterge(int x)
{
int r=x%M,p;
p=lst[r];
if(x==val[p])
{
lst[r]=urm[p];
return;
}
while(urm[p]!=0)
{
if(val[urm[p]]==x)
urm[p]=urm[urm[p]];
else
p=urm[p];
}
}
int main()
{
int n,i,a,b;
f>>n;
for(i=1;i<=n;i++)
{
f>>a>>b;
if(a==1)
adauga(b);
if(a==2)
sterge(b);
if(a==3)
{
if(cauta(b)==true)
g<<"1";
else
g<<"0";
}
}
return 0;
}