Cod sursă (job #76961)

Utilizator avatar AlexPascadi Alex Pascadi AlexPascadi IP ascuns
Problemă Pointeri Compilator cpp | 1,07 kb
Rundă Tema 2 clasele 9-10 2014/15 Status evaluat
Dată 4 oct. 2014 19:26:00 Scor 95
#include <fstream>

using namespace std;

struct lista
{
    int st;
    int dr;
};

const int N=200000;

lista v[N];

lista Act(int nod)
{
    int nodst=v[nod].st,noddr=v[nod].dr,i;
    lista x,y;

    y.st=y.dr=nod;

    //stanga
    if(nodst!=-1)
    {
        x=Act(nodst);
        i=x.dr;
        y.st=x.st;
        v[i].dr=nod;
        v[nod].st=i;
    }

    //dreapta
    if(noddr!=-1)
    {
        x=Act(noddr);
        i=noddr;
        i=x.st;
        y.dr=x.dr;
        v[i].st=nod;
        v[nod].dr=i;
    }

    return y;
}

int main()
{
    ifstream in("pointeri.in");
    ofstream out("pointeri.out");

    int n,rad,i;
    lista x;

    in>>n>>rad;

    for(i=0;i<n;i++)
        in>>v[i].st;
    for(i=0;i<n;i++)
        in>>v[i].dr;

    x=Act(rad);

    out<<x.st<<"\n";

    for(i=0;i<n;i++)
    {
        out<<v[i].st;
        if(i!=n-1)
            out<<" ";
    }
    out<<"\n";
    for(i=0;i<n;i++)
    {
        out<<v[i].dr;
        if(i!=n-1)
            out<<" ";
    }

    return 0;
}