Cod sursa(job #2755024)

Utilizator andi2000Toader Andi andi2000 Data 26 mai 2021 19:02:07
Problema Stramosi Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <iostream>
#include<fstream>
using namespace std;
int inordine[500005], preordine[500005], pozitie[500005], arbore[500005][2], aux =1;

int constr_arbore(int stanga, int dreapta)
{
    int nod = preordine[aux];
    if(stanga<=pozitie[nod]-1) {
        aux++;
        arbore[nod][0] = constr_arbore(stanga, pozitie[nod]-1);
    }
    else
        arbore[nod][0] = 0;
    if(pozitie[nod]+1<=dreapta) {
        aux++;
        arbore[nod][1] = constr_arbore(pozitie[nod]+1, dreapta);
    }
    else
        arbore[nod][1] = 0;

    return nod;
}
int main()
{
    int n;
    ifstream f("curatenie.in");
    f>>n;
    //citesc parcurgerea inordine
    for(int i = 1; i<=n ; i++)
    {
        f>>inordine[i];
        pozitie[inordine[i]] = i;
    }
    //citesc parcurgerea preordine - nod 1 = radacine arbore
    for(int i = 1; i<=n; i++)
        f>>preordine[i];
    f.close();

    constr_arbore(1, n);
    ofstream g("curatenie.out");
    for(int i=1; i<=n; i++)
        g<<arbore[i][0]<<" "<<arbore[i][1]<<"\n";

    g.close();
}