Cod sursa(job #1190985)
Utilizator | Data | 26 mai 2014 09:18:33 | |
---|---|---|---|
Problema | Hashuri | Scor | 20 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 3.46 kb |
#include <cstdio>
using namespace std;
struct point
{
int inf;
point *leg;
};
point *prim, *u;
int main()
{
int t, i, z, x, nr=0;
point *p, *r, *P, *R, *q;
freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
scanf("%d",&t);
for (i=1; i<=t; i++)
{
scanf("%d%d",&z,&x);
if (z==1) nr++;
if (z==1 && nr==1)
{
prim=new point;
u=new point;
prim->inf=x;
prim->leg=NULL;
u=prim;
continue;
}
else if (z==2 && nr==0) continue;
else if (z==3 && nr==0)
{
printf("0\n");
continue;
}
if (i==1)
{
prim=new point;
u=new point;
prim->inf=x;
prim->leg=NULL;
u=prim;
continue;
}
else if (z==1)
{
p=new point;
p=prim;
int j=0;
bool exista=false;
do
{
if (j!=0) p=p->leg;
if (p->inf==x)
{
exista=true;
break;
}
j++;
} while (p->leg!=NULL);
if (exista==false)
{
r=new point;
r->inf=x;
r->leg=NULL;
u->leg=r;
u=r;
}
}
else if (z==2)
{
P=new point;
R=new point;
int j=0;
P=prim;
R=P->leg;
do
{
if (j!=0)
{
P=P->leg;
R=R->leg;
}
if (R->inf==x)
{
P->leg=R->leg;
delete R;
break;
}
j++;
} while (R->leg!=NULL);
}
else if (z==3)
{
q=new point;
q=prim;
int j=0;
bool exista=false;
do
{
if (j!=0) q=q->leg;
if (q->inf==x)
{
exista=true;
break;
}
j++;
} while (q->leg!=NULL);
if (exista==true) printf("1\n");
else printf("0\n");
}
}
fclose(stdin);
fclose(stdout);
return 0;
}