Pagini recente »
2020-09-25-concurs-01
|
2018-10-18-clasa-6-tema-5
|
Atașamentele paginii 2019-03-14-clasa-6-tema-25
|
Istoria paginii utilizator/carinamaria
|
Cod sursă (job #582159)
Cod sursă (job
#582159)
#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;
}