Submission #1341643

#TimeUsernameProblemLanguageResultExecution timeMemory
1341643mychecksedadJust Long Neckties (JOI20_ho_t1)C++20
100 / 100
67 ms7064 KiB
/* Author : Mychecksdead  */
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
#define MOD (1000000000+7)
#define MOD1 (998244353)
#define pb push_back
#define all(x) x.begin(), x.end()
#define en cout << '\n'
#define ff first
#define ss second
#define pii pair<int,int>
#define vi vector<int>
const int N = 1e6+10, M = 1e5+10;

pii a[N];
int b[N], n, pref[N], suf[N], ans[N];
void solve(){
    cin >> n;
    for(int i = 1; i <= n + 1; ++i) cin >> a[i].ff;
    for(int i = 1; i <= n + 1; ++i) a[i].ss = i;
    for(int i = 1; i <= n; ++i) cin >> b[i];
    sort(a+1, a+1+n+1);
    sort(b+1, b+1+n);
    pref[1] = max(0, a[1].ff - b[1]);
    for(int i = 2; i <= n; ++i){
        pref[i] = max(pref[i - 1], max(0, a[i].ff - b[i]));
    }

    suf[n + 1] = max(0, a[n + 1].ff - b[n]);
    for(int i = n; i > 1; --i){
        suf[i] = max(suf[i + 1], max(0, a[i].ff - b[i - 1]));
    }
    ans[a[1].ss] = suf[2];
    for(int k = 2; k < n + 1; ++k){
        ans[a[k].ss] = max(pref[k - 1], suf[k + 1]);
    }
    ans[a[n+1].ss] = pref[n];
    for(int i = 1; i <= n+1; ++i) cout << ans[i] << ' ';
}


int main(){
  cin.tie(0); ios::sync_with_stdio(0);
  int tc = 1;
  while(tc--){
    solve();
    cout << '\n';
  }
  cerr << "Time taken : "<<(float)clock()/CLOCKS_PER_SEC<<" seconds\n";
  return 0;
} 
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...