Pagini recente »
Borderou de evaluare (job #22017)
|
Cod sursă (job #309273)
Cod sursă (job
#309273)
#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;
}