제출 #1125071

#제출 시각아이디문제언어결과실행 시간메모리
1125071irmuunSnowball (JOI21_ho_t2)C++20
0 / 100
1 ms332 KiB
#include <bits/stdc++.h>

using namespace std;

#define ll long long
#define pb push_back
#define ff first
#define ss second
#define all(s) s.begin(),s.end()
#define rall(s) s.rbegin(),s.rend()

int main(){
    ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    ll n,q;
    cin>>n>>q;
    vector<ll>x(n);
    vector<pair<ll,ll>>dist;
    for(ll i=0;i<n;i++){
        cin>>x[i];
        if(i>0){
            dist.pb({x[i]-x[i-1],i-1});
        }
    }
    sort(all(dist));
    vector<ll>ans(n,0);
    ll mn=0,mx=0,cur=0,j=0;
    while(q--){
        ll w;
        cin>>w;
        cur+=w;
        ll newmn=min(mn,cur),newmx=max(mx,cur);
        while(j<n-1&&newmx-newmn>=dist[j].ff){
            ans[dist[j].ss]+=mx;
            ans[dist[j].ss+1]+=abs(mn);
            ll left=dist[j].ff-(mx-mn);
            if(newmn!=mn){
                ans[dist[j].ss+1]+=left;
            }
            else{
                ans[dist[j].ss]+=left;
            }
            j++;
        }
        mn=min(mn,cur);
        mx=max(mx,cur);
    }
    ans[0]+=abs(mn);
    ans[n-1]+=mx;
    for(ll i=0;i<n;i++){
        cout<<ans[i]<<'\n';
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...