Submission #974904

#TimeUsernameProblemLanguageResultExecution timeMemory
974904berrJust Long Neckties (JOI20_ho_t1)C++17
100 / 100
154 ms26276 KiB
#include <bits/stdc++.h>
using namespace std; 
#define int long long
const int N=5005, INF=1e18;
 
signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
   
    int n; cin >> n;

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

    for(auto &i: a) cin >> i;
    for(auto &i: b) cin >> i;

    vector<int> id(n+1);
    
    iota(id.begin(), id.end(), 0);
    sort(id.begin(), id.end(), [&](int x, int y){
        return a[x] < a[y];
    });

    sort(b.begin(), b.end());

    priority_queue<array<int, 3>> pq;
    vector<int> p(n), ans(n+1);

    for(int i=0; i<n; i++){
       // cout<<id[i+1]<<" ";
        pq.push({(int)max(0LL, a[id[i+1]]-b[i]), i, id[i+1]});
        p[i]=id[i+1];
    }
    ans[id[0]]=pq.top()[0];

    for(int i=1; i<=n; i++){
        pq.push({(int)max(0LL, a[id[i-1]]-b[i-1]), i-1, id[i-1]});
        p[i-1]=id[i-1];
        while(pq.size() && p[pq.top()[1]]!=pq.top()[2]) pq.pop();
        
        ans[id[i]]=pq.top()[0];
    }
    
    for(auto &i: ans) cout<<i<<" ";

}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...