Submission #1342859

#TimeUsernameProblemLanguageResultExecution timeMemory
1342859tamir1Just Long Neckties (JOI20_ho_t1)C++20
100 / 100
70 ms11804 KiB
#include <bits/stdc++.h>
using namespace std;


#define int long long
#define ff first 
#define ss second
#define sz(a) (int)(a).size()
#define all(a) (a).begin(),(a).end()
#define rall(a) (a).rbegin(),(a).rend()
#define pb push_back



void solve() {
    int n;
    cin >> n;
    vector<pair<int, int>> a(n + 1);
    vector<int> ans(n + 1), b(n);
    for(int i = 0; i <= n; i++) {
        cin >> a[i].ff;
        a[i].ss = i;
    }
    for(int &i : b) cin >> i;
    sort(all(a));
    sort(all(b));
    vector<int> pref(n + 1);
    vector<int> suff(n + 1);
    for(int i = 0; i < n; i++) {
        if(i == 0) pref[0] = max(0LL, a[i].ff - b[i]);
        else {
            pref[i] = max(pref[i - 1], max(0LL, a[i].ff - b[i]));
        }
    }
    for(int i = n; i > 0; i--) {
        if(i == n) suff[n] = max(0LL, a[i].ff - b[i - 1]);
        else {
            suff[i] = max(suff[i + 1], max(0LL, a[i].ff - b[i - 1]));
        }
    }
    for(int i = 0; i <= n; i++) {
        int x;
        if(i == 0) x = suff[1];
        else if(i == n) x = pref[n - 1];
        else x = max(pref[i - 1], suff[i + 1]);
        ans[a[i].ss] = x;
    }
    for(int i = 0; i <= n; i++) cout << ans[i] << " ";

}   


signed main() {
    ios_base::sync_with_stdio(0);cin.tie(0);


    int t = 1;
    // cin >> t;
    while(t--) solve();
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...