Submission #1350752

#TimeUsernameProblemLanguageResultExecution timeMemory
1350752kantaponzJust Long Neckties (JOI20_ho_t1)C++20
100 / 100
63 ms16516 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long

const int nx = 2e5 + 5;

int n;
ll a[nx], b[nx];
vector<pair<ll,int>> aa, bb;
ll qs1[nx], qs2[nx];
ll ans[nx];

int main() {
    ios_base::sync_with_stdio(0), cin.tie(0);
    cin >> n;
    for (int i = 1; i <= n + 1; i++) cin >> a[i], aa.emplace_back(a[i], i);
    for (int i = 1; i <= n; i++) cin >> b[i], bb.emplace_back(b[i], i);
    aa.emplace_back(0, 0);
    bb.emplace_back(0, 0);
    sort(bb.begin(), bb.end()); sort(aa.begin(), aa.end());
    for (int i = 1; i <= n; i++) {
        qs1[i] = max(0LL, aa[i].first - bb[i].first);
        qs2[i] = max(0LL, aa[i + 1].first - bb[i].first);
        qs1[i] = max(qs1[i], qs1[i - 1]);
    }
    for (int i = n; i >= 1; i--) qs2[i] = max(qs2[i], qs2[i + 1]);
    for (int i = 1; i <= n; i++) {
        ans[aa[i].second] = max(qs1[i - 1], qs2[i]);
    }
    ans[aa[n+1].second] = qs1[n];
    for (int i = 1; i <= n + 1; i++) {
        cout << ans[i] << " ";
    }

}

/*
3
4 3 7 6
2 6 4

2 2 1 1

*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...