Pagini recente »
Rating Quadro LXGA (LXGA)
|
Monitorul de evaluare
|
Rating cloeeee (cloeeee)
|
Atașamentele paginii Clasament 2024-09-10-clasa-6-tema-08
|
Cod sursă (job #238737)
Cod sursă (job
#238737)
#include <fstream>
using namespace std;
ifstream fin("pointeri.in");
ofstream fout ("pointeri.out");
#define MAX 200001
struct pointer
{
int st, dr;
}a[MAX];
int n, rad, i, prim, bef1, bef2;
void rez(int ind)
{
if (a[ind].st == -1 && a[ind].dr == -1)
{
i++;
if (i == 1)
{
prim = ind;
bef1=ind;
a[ind].st=-1;
}
else if (i == 2)
{
bef2=ind;
a[bef1].dr = ind;
a[bef2].st = bef1;
}
else
{
a[bef2].dr = ind;
a[ind].st = bef2;
bef1 = bef2;
bef2 = ind;
}
return;
}
else if (a[ind].st == -1)
{
i++;
if (i == 1)
{
prim = ind;
bef1=ind;
a[ind].st=-1;
}
else if (i == 2)
{
bef2=ind;
a[bef1].dr = ind;
a[bef2].st = bef1;
}
else
{
a[bef2].dr = ind;
a[ind].st = bef2;
bef1 = bef2;
bef2 = ind;
}
rez(a[ind].dr);
}
else if (a[ind].dr == -1)
{
rez(a[ind].st);
i++;
if (i == 1)
{
prim = ind;
bef1=ind;
a[ind].st=-1;
}
else if (i == 2)
{
bef2=ind;
a[bef1].dr = ind;
a[bef2].st = bef1;
}
else
{
a[bef2].dr = ind;
a[ind].st = bef2;
bef1 = bef2;
bef2 = ind;
}
}
else
{
rez(a[ind].st);
i++;
if (i == 1)
{
prim = ind;
bef1=ind;
a[ind].st=-1;
}
else if (i == 2)
{
bef2=ind;
a[bef1].dr = ind;
a[bef2].st = bef1;
}
else
{
a[bef2].dr = ind;
a[ind].st = bef2;
bef1 = bef2;
bef2 = ind;
}
rez(a[ind].dr);
}
}
int main()
{
//citire
fin >> n >> rad;
for (int j = 0; j<n; j++) fin >> a[j].st;
for (int j = 0; j<n; j++) fin >> a[j].dr;
rez(rad);
fout << prim << '\n';
for (int j = 0; j<n ; j++) fout << a[j].st << ' ';
fout << '\n';
for (int j = 0; j<n; j++) fout << a[j].dr << ' ';
fout << '\n';
return 0;
}