Pagini recente » Cod sursa (job #354845) | Cod sursa (job #2985928) | Cod sursa (job #2109866) | Cod sursa (job #1454547) | Cod sursa (job #1237464)
#include <fstream>
using namespace std;
ifstream in("hashuri.in");
ofstream out("hashuri.out");
int m, R, lst[1000001], val[1000001], urm[1000001];
short int apartine(int x)
{
int p=lst[x%R];
while(p!=-1)
{
if(val[p]==x) return 1;
p=urm[p];
}
return 0;
}
void adauga(int x)
{
int r=x%R;
if(apartine(x)) return;
val[m]=x;
urm[m++]=lst[r];
lst[r]=m-1;
}
void sterg(int x)
{
int r=x%R, p;
p=lst[r];
if(x==val[p]) lst[r]=urm[p];
while(urm[p]!=-1)
{
if(urm[p]!=-1) urm[p]=urm[urm[p]];
p=urm[p];
}
}
int main()
{
int n, op, x, i;
in>>n;
R=n/2;
for(i=0;i<R;i++) lst[i]=-1;
for(i=1;i<=n;i++)
{
in>>op>>x;
if(op==1) adauga(x);
if(op==2) sterg(x);
if(op==3) out<<apartine(x)<<"\n";
}
return 0;
}