Pagini recente » Cod sursa (job #1314816) | Cod sursa (job #2543718) | Cod sursa (job #2075255) | Cod sursa (job #450402) | Cod sursa (job #2754609)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("curatenie.in");
ofstream out("curatenie.out");
const int nmax = 500002;
int inordine[nmax], preordine[nmax], poz[nmax], copii[nmax][3];
int arbore(int r, int s, int d)
{
int vampir = preordine[r];
int p = poz[vampir];
if(p != s)
{
copii[vampir][1] = arbore(r + 1, s, p - 1);
}
if(p != d)
{
copii[vampir][2] = arbore(r + p - s + 1, p + 1, d);
}
return vampir;
}
int main() {
int n;
in >> n;
int i;
for(i = 0; i < n; i++)
{
in >> inordine[i];
poz[inordine[i]] = i;
}
for(i = 0; i < n; i++)
{
in >> preordine[i];
}
int a = arbore(0, 0, n - 1);
for(i = 1; i <= n; i++)
{
out << copii[i][1] << ' ' << copii[i][2] << '\n';
}
return 0;
}