Submission #977729

#TimeUsernameProblemLanguageResultExecution timeMemory
977729UltraFalconJust Long Neckties (JOI20_ho_t1)C++17
100 / 100
96 ms19136 KiB
#ifndef DEBUG
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,avx,avx2,abm,mmx,fma,popcnt")
#endif

#include <bits/stdc++.h>
#define int long long
using ll = long long;

using namespace std;

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

    int n; cin >> n;

    vector<int> a(n+1);
    for (auto &x : a) cin >> x;

    vector<int> b(n);
    for (auto &x : b) cin >> x;

    vector<int> sorted_b(b);
    sort(sorted_b.begin(), sorted_b.end());

    vector<pair<int, int>> sorted_idx;
    for (int i=0; i<=n; i++) {
        sorted_idx.push_back({a[i], i});
    }
    sort(sorted_idx.begin(), sorted_idx.end());

    vector<int> pref(n+2, 0);
    for (int i=0; i<n; i++) {
        pref[i+1] = max(pref[i], max(sorted_idx[i].first - sorted_b[i], 0LL));
    }
    vector<int> suff(n+2, 0);
    for (int i=n; i>0; i--) {
        suff[n-i+1] = max(suff[n-i], max(sorted_idx[i].first - sorted_b[i-1], 0LL));
    }

    vector<int> res(n+1, -1);
    for (int i=0; i<=n; i++) {
        res[sorted_idx[i].second] = max(pref[i], suff[n-i]);
    }

    for (auto &x : res) {
        cout << x << " "; 
    }
    cout << "\n";

}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...