Submission #566953

#TimeUsernameProblemLanguageResultExecution timeMemory
566953katwamiawJust Long Neckties (JOI20_ho_t1)C++14
100 / 100
249 ms8592 KiB
#include<bits/stdc++.h>
#define ll long long
#define no cout << "NO\n"
#define yes cout << "YES\n"
#define endl '\n'
#define pb push_back
using namespace std ;
//fflush(stdout) ;

const int Max_n=2e5+10 ;
int a[Max_n] , b[Max_n] , f[Max_n] , c[Max_n] ;
int pref[Max_n] , suff[Max_n] ;
vector<array<int,2>>v ;

int main(){
    int n ; cin >> n ;
    for(int i=0 ; i<n+1 ; i++){
        cin >> a[i] ;
        v.push_back({a[i],i}) ;
    }
    for(int i=0 ; i<n ; i++) cin >> b[i] ;

    sort(a,a+n+1) ;
    sort(v.begin(),v.end()) ;
    sort(b,b+n) ;

    for(int i=0 ; i<n+1 ; i++){
        f[i]=v[i][1] ;
    }

    pref[0]=0 ;
    for(int i=0 ; i<n ; i++){
        int k=max((a[i]-b[i]),0) ;
        pref[i+1]=max(pref[i],k) ;
    }
    suff[n+1]=0 ;
    for(int i=n ; i>=1 ; i--){
        int k=max((a[i]-b[i-1]),0) ;
        suff[i]=max(suff[i+1],k) ;
    }

    for(int i=1 ; i<=n+1 ; i++){
        int ans=max(pref[i-1],suff[i]) ;
        c[f[i-1]]=ans ;
    }

    for(int i=0 ; i<n+1 ; i++) cout << c[i] << ' ' ;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...