#include "bits/stdc++.h"
#define F first
#define S second
#define ll long long
#define pii pair<int,int>
const int mxN = 3e5 + 5;
const int mod = 1e9 + 7;
using namespace std;
int p[mxN],b[mxN], a[mxN],sol[mxN];
signed main(){
int n;
cin >>n;
int ans = 0;
memset(sol,-1,sizeof sol);
for(int i = 1;i <= n;i++){
cin >>p[i];
b[p[i]] = i;
}
for(int i = 1;i <= n;i++) cin >>a[i];
sort(a + 1,a + n + 1);
sol[1] = a[1];
int vi = 2,vj = 3;
int i = b[1],j = p[1];
while(sol[i] == -1 && sol[j] == -1){
sol[i] = a[vi];
sol[j] = a[vj];
i = b[i];
j = p[j];
vi += 2;
vj += 2;
}
for(int i = 1;i <= n;i++){
// cout<<sol[i]<<' ';
int x = i - 1,y = i + 1;
if(!x) x = n;
if(y > n) y = 1;
ans = max({ans,abs(sol[i] - sol[x]),abs(sol[i] - sol[y])});
}
cout<<ans<<'\n';
for(int i = 1;i <= n;i++) cout<<sol[i]<<' ';
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |