#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[j] = a[vj];
    sol[i] = a[vi];
    j = p[j];
    i = b[i];
    vj += 2;
    vi += 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... |