제출 #1014662

#제출 시각아이디문제언어결과실행 시간메모리
1014662snpmrnhlolJust Long Neckties (JOI20_ho_t1)C++17
100 / 100
155 ms11616 KiB
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 2e5;
int v[N + 1];
int p[N + 1];
ll sf[N + 1];
int v2[N];
ll ans[N + 1];
int main(){
    int n;
    cin>>n;
    for(int i = 0;i < n + 1;i++){
        cin>>v[i];
        p[i] = i;
    }
    for(int i = 0;i < n;i++){
        cin>>v2[i];
    }
    sort(p, p + n + 1,[&](int a,int b){
         return v[a] < v[b];
    });
    sort(v2,v2 + n);
    for(int i = n;i >= 1;i--){
        sf[i] = max((i != n?sf[i + 1]:0ll),(ll)max(0,v[p[i]] - v2[i - 1]));
    }
    ll cur = 0;
    for(int i = 0;i <= n;i++){
        ans[p[i]] = max(cur,(i == n?0:sf[i + 1]));
        //cout<<cur<<' '<<(i == n?0:sf[i + 1])<<' '<<p[i]<<'\n';
        if(i != n)cur = max(cur,(ll)max(v[p[i]] - v2[i],0));
    }
    for(int i = 0;i <= n;i++){
        cout<<ans[i]<<' ';
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...