Submission #1316112

#TimeUsernameProblemLanguageResultExecution timeMemory
1316112nambanana987Just Long Neckties (JOI20_ho_t1)C++20
100 / 100
67 ms11640 KiB
#include <bits/stdc++.h>
#include <climits>
using namespace std;
#define f first
#define s second
#define all(a) a.begin(),a.end()
#define sz(a) (int)a.size()
#define int long long
const int N=2e5+5;
pair<int,int> A[N];
int B[N];
int suf_dif[N],pre_dif[N];
int ans[N];
int n;
void solve(){
    cin>>n;
    for(int i=1;i<=n+1;++i){
        cin>>A[i].f;
        A[i].s=i;
    }
    for(int i=1;i<=n;++i) cin>>B[i];

    sort(A+1,A+n+2);
    sort(B+1,B+n+1);

    for(int i=1;i<=n;++i) pre_dif[i]=max(A[i].f-B[i],0ll);
    for(int i=1;i<=n+1;++i) suf_dif[i]=max(A[i].f-B[i-1],0ll);

    
    
    //for(int i=1;i<=n+1;++i) cout<<suf_dif[i]<<' ';cout<<'\n';
    //for(int i=1;i<=n;++i) cout<<pre_dif[i]<<' ';cout<<'\n';

    for(int i=1;i<=n;++i) pre_dif[i]=max(pre_dif[i],pre_dif[i-1]);
    for(int i=n+1;i>=1;--i) suf_dif[i]=max(suf_dif[i],suf_dif[i+1]);

    
    for(int i=1;i<=n+1;++i){
        ans[A[i].s]=max(pre_dif[i-1],suf_dif[i+1]);
    }
    for(int i=1;i<=n+1;++i) cout<<ans[i]<<' ';
}
signed main(){

    ios_base::sync_with_stdio(0);cin.tie(0);
    int T=1;
    while(T--) solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...