Cod sursa(job #1190985)

Utilizator vlady1997Vlad Bucur vlady1997 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;
        }