Submission #1196116

#TimeUsernameProblemLanguageResultExecution timeMemory
1196116dostsJust Long Neckties (JOI20_ho_t1)C++20
100 / 100
91 ms15168 KiB
#include <bits/stdc++.h>
#pragma GCC target("lzcnt,popcnt")
#pragma GCC optimize("O3,unroll-loops")
#define int long long
#define pii pair<int,int>
#define vi vector<int>
#define ff first
#define ss second
#define all(x) x.begin(),x.end()
#define sp << " " << 
using namespace std;
const int inf = 2e18;
const int N = 2e5+1;

void solve() {
    int n;
    cin >> n;
    vi a(n+2),b(n+1);
    for (int i=1;i<=n+1;i++) cin >> a[i];
    for (int i=1;i<=n;i++) cin >> b[i];
    vi aa = a,bb = b;
    sort(1+all(a));
    sort(1+all(b));
    vi dp(n+1,0),dpr(n+2,0);

    for (int i=1;i<=n;i++) dp[i] = max(dp[i-1],max(0ll,a[i]-b[i]));
    for (int i = n;i>=1;i--) dpr[i] = max(dpr[i+1],max(0ll,a[i+1]-b[i]));

    vi ord(n+2);
    iota(all(ord),0ll);
    sort(1+all(ord),[&](int x,int y){
        return aa[x] < aa[y];
    });
    vi ans(n+2);
    for (int i=1;i<=n+1;i++) {
        int id = ord[i];
        ans[id] = max(dp[i-1],dpr[i]);
    }
    for (int i=1;i<=n+1;i++) cout << ans[i] << ' ';
    cout << '\n';
} 

signed main() {
    ios_base::sync_with_stdio(0);cin.tie(0);
    #ifdef Dodi
        freopen("in.txt","r",stdin);
        freopen("out.txt","w",stdout);
    #endif
    int t = 1;
    //cin >> t;
    while (t --> 0) solve();
} 
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...