Cod sursă (job #309273)

Utilizator avatar Cammie Camelia Lazar Cammie IP ascuns
Problemă Pointeri Compilator cpp | 1,09 kb
Rundă Arhiva de probleme Status evaluat
Dată 25 iul. 2017 17:28:23 Scor 100
#include <fstream>

#define NIL -1
#define MAXN 200000

using namespace std;

ifstream fin("pointeri.in");
ofstream fout("pointeri.out");

int st[MAXN], dr[MAXN];

inline void Construct(int poz, int& prim, int& ultim) {
    if (st[poz] != NIL) {
        Construct(st[poz], prim, ultim);
    }

    if (prim == NIL) {
        prim = poz;
        ultim = poz;
    }
    else {
        st[poz] = ultim;
        dr[ultim] = poz;
        ultim = poz;
    }

    if (dr[poz] != NIL) {
        Construct(dr[poz], prim, ultim);
    }
}

inline void Read(void){

    int n, rad;
    fin >> n >> rad;

    for (int i = 0; i <  n; i++) {
        fin >> st[i];
    }

    for (int i = 0; i < n; i++) {
        fin >> dr[i];
    }

    int prim = -1, ultim = -1;

    Construct(rad, prim, ultim);

    fout << prim << "\n";

    for (int i = 0; i < n; i++) {
        fout << st[i] << " ";
    }

    fout << "\n";

    for (int i = 0; i < n; i++) {
        fout << dr[i] << " ";
    }
}

int main () {
    Read();

    fin.close(); fout.close(); return 0;
}