Submission #1310554

#TimeUsernameProblemLanguageResultExecution timeMemory
1310554heraJust Long Neckties (JOI20_ho_t1)C++20
100 / 100
160 ms7088 KiB
#include <bits/stdc++.h>
#define ll long long 
#define S second
#define F first
#define Ft front()
#define T pair<string, pair<int, int>>
using namespace std;

ll gcd(ll a, ll b){
    if(b==1)
        return a;
    else
        return gcd(b , a%b);
}

ll lcm(ll a, ll b){
    return (a*b)/(gcd(a,b));
}

ll binpow(ll a, ll b, ll MOD){
    if(b==0)
        return 1;

    ll ans= binpow(a, b/2, MOD);
    if(b%2==0)
        return (ans*ans) % MOD;
    else
        return (((ans*ans)%MOD) * (a%MOD) % MOD);
}

int main(){

    int n;
    cin>>n;

    vector<pair<int, int>> a (n+2);
    vector<int> b (n+1, 0);

    for(int i=1;i<=n+1;i++){
        int x;
        cin>>x;
        a[i]={x, i};
    } 
    for(int i=1;i<=n;i++){
        cin>>b[i];
    }
    stable_sort(a.begin(), a.end());
    stable_sort(b.begin(), b.end());
    vector<int> difa(n+2, 0);
    vector<int> difb(n+2, 0);

    for(int i=1;i<=n;i++){
        difa[i]=max(max(a[i].F-b[i], 0), difa[i-1]);
    }
    for(int i=n;i>=1;i--){
        difb[i]=max(max(a[i+1].F-b[i], 0), difb[i+1]);
    }

    vector<int> ans(n+2);

    for(int i=1;i<=n+1;i++){
        ans[a[i].S]=max(difb[i], difa[i-1]);
    }

    for(int i=1;i<=n+1;i++){
        cout<<ans[i]<<' ';
    }
    
    
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...