Pagini recente » Istoria paginii runda/concurs21febr2021/clasament | Cod sursa (job #1330690) | Cod sursa (job #157076) | Istoria paginii runda/tsojiround/clasament | Cod sursa (job #2106979)
#include <fstream>
#define Nmax 500002
using namespace std;
ifstream fin("curatenie.in");
ofstream fout("curatenie.out");
struct pereche
{
int left,right;
}arb[Nmax];
int srd[Nmax],rsd[Nmax],poz[Nmax];
int n;
void Read()
{
int i;
fin>>n;
for(i=1;i<=n;++i)
{
fin>>srd[i];
poz[srd[i]]=i;
}
for(i=1;i<=n;++i) fin>>rsd[i];
}
void Solve(int left,int right,int rad)
{
if(left<=right)
{
int rad_left,rad_right;
rad_left=rad+1;
if(poz[rsd[rad]]>left)
{
arb[rsd[rad]].left=rsd[rad_left];
Solve(left,poz[rsd[rad]]-1,rad_left);
}
else arb[rsd[rad]].left=0;
rad_right=poz[rsd[rad]]-left+rad+1;
if(poz[rsd[rad]]<right)
{
arb[rsd[rad]].right=rsd[rad_right];
Solve(poz[rsd[rad]]+1,right,rad_right);
}
else arb[rsd[rad]].right=0;
}
}
void Print()
{
int i;
for(i=1;i<=n;++i)
fout<<arb[i].left<<" "<<arb[i].right<<"\n";
}
int main()
{
Read();
Solve(1,n,1);
Print();
return 0;
}