Submission #774423

#TimeUsernameProblemLanguageResultExecution timeMemory
774423kirakaminski968Just Long Neckties (JOI20_ho_t1)C++17
100 / 100
82 ms11612 KiB
#include <bits/stdc++.h>
using namespace std;

int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int N; cin >> N;
    vector<pair<int,int>> arr(N+1); vector<int> help(N+1);
    for(int i = 0;i<=N;++i){
        cin >> arr[i].first;
        arr[i].second = i;
    }
    sort(arr.begin(),arr.end());
    for(int i = 0;i<=N;++i) help[arr[i].second] = i;
    vector<int> brr(N);
    for(int i = 0;i<N;++i){
        cin >> brr[i];
    }
    sort(brr.begin(),brr.end());
    vector<int> pref(N),suf(N);
    for(int i = 0;i<N;++i){
        if(i == 0){
            pref[i] = max(arr[i].first-brr[i],0);
        }
        else{
            pref[i] = max(max(arr[i].first-brr[i],0),pref[i-1]);
        }
        //cout << pref[i] << " ";
    }
    //cout << "\n";
    for(int i = N-1;i>=0;--i){
        if(i == N-1){
            suf[i] = max(arr[i+1].first-brr[i],0);
        }
        else{
            suf[i] = max(max(arr[i+1].first-brr[i],0),suf[i+1]);
        }
        //cout << suf[i] << " ";
    }
    //cout << "\n";
    vector<int> ans(N+1);
    for(int i = 0;i<=N;++i){
        if(i == 0) ans[arr[i].second] = suf[i];
        else if(i == N) ans[arr[i].second] = pref[N-1];
        else{
            ans[arr[i].second] = max(suf[i],pref[i-1]);
        }
    }
    for(int i = 0;i<=N;++i) cout << ans[i] << " ";
    cout << "\n";
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...