제출 #643744

#제출 시각아이디문제언어결과실행 시간메모리
643744PagodePaivaJust Long Neckties (JOI20_ho_t1)C++17
100 / 100
132 ms19960 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

using namespace std;

int32_t main(){
    ios::sync_with_stdio(false); cin.tie(0);
    
    int n;
    cin >> n;
    vector <pi> a;
    vector <int> b;

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

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

    srt(a);
    srt(b);

    int pref[n+1], suf[n+1];

    pref[0] = max((0)*(1ll), a[0].fr - b[0]);

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

    suf[n] = max((0)*(1ll), a[n].fr - b[n-1]);

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

    vector <pi> resp;

    for(int i = 0;i <= n;i++){
        int res;
        if(i == 0) res = suf[1];
        else if(i == n) res = pref[n-1];
        else res = max(pref[i-1], suf[i+1]);

        resp.pb({a[i].sc, res});
    }

    srt(resp);

    for(auto v : resp){
        cout << v.sc << " ";
    }

    cout << "\n";

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