Submission #643573

#TimeUsernameProblemLanguageResultExecution timeMemory
643573PagodePaivaJust Long Neckties (JOI20_ho_t1)C++14
0 / 100
0 ms212 KiB
#include<bits/stdc++.h>
#define int long long
#define ms(v) memset(v, -1, sizeof v)
#define pb push_back
#define mp make_pair
#define ll long long int
#define pi pair <int,int>
#define itn int
#define fr first
#define sc second
#define srt(v) sort(v.begin(), v.end())
#define rvs(v) reverse(v.begin(), v.end())
#define mod 1000000007
#define INF 1e18
#define N 200010

using namespace std;

int n;
vector <pi> a;
vector <pi> b;
int pref[N], suf[N];

int32_t main(){
    ios::sync_with_stdio(false); cin.tie(0);
    
    cin >> n;

    for(int i = 1;i <= n+1;i++){
        int x;
        cin >> x;
        a.pb({x, i});
    }

    for(int i = 1;i <= n;i++){
        int x;
        cin >> x;
        b.pb({x, i});
    }

    srt(a);
    srt(b);

    for(int i = 1;i <= n;i++){
        pref[i] = max(pref[i-1], a[i-1].fr - b[i-1].fr);
    }

    for(int i = n+1;i > 1;i--){
        suf[i] = max(suf[i+1], a[i-1].fr - b[i-2].fr);
    }

    vector <pi> res;

    for(int i = 0;i <= n;i++){
        int pos = a[i].sc;
        int val = max(pref[a[i].sc-1], suf[a[i].sc+1]);
        res.pb({pos, val});
    }

    srt(res);

    for(int i = 0;i <= n;i++){
        cout << res[i].sc << " ";
    }

    cout << "\n";

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...