#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define MOD 1000000009
#define INF 1000000019
#define INFL 1000000000000000099LL
ll a,b,c,d,t,n,m,ans[1000007],l,q;
vector<ll>x,w={0};
set<pair<ll,pair<ll,ll>>>s;
int main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);
    cin>>n>>q;
    for(ll i=0;i<n;i++){
        cin>>a;
        x.pb(a);
    }
    for(ll i=0;i<q;i++){
        cin>>a;
        w.pb(w.back()+a);
    }
    s.insert({INFL,{(n-1),0}});
    for(ll i=1;i<n;i++){
        s.insert({x[i]-x[i-1],{i-1,(i)}});
    }
    a=0;
    b=0;
    for(ll i=0;i<q;i++){
        a=min(a,w[i+1]);
        b=max(b,w[i+1]);
        while(s.size() && -a+b>=(*s.begin()).ff){
            auto pom=(*s.begin());
            if(w[i+1]>0){
                if(pom.ff<b){
                   ans[pom.ss.ff]+=pom.ff; 
                }
                else{
                    ans[pom.ss.ss]-=a;
                    ans[pom.ss.ff]+=pom.ff+a;
                }
            }
            else{
                if(pom.ff<-a){
                    ans[pom.ss.ss]+=pom.ff;
                }
                else{
                    ans[pom.ss.ff]+=b;
                    ans[pom.ss.ss]+=(pom.ff-b);
                }
            }
            s.erase(s.begin());
        }
    }
    while(s.size()){
        auto pom=*s.begin();
        ans[pom.ss.ff]+=b;
        ans[pom.ss.ss]-=a;
        s.erase(s.begin());
    }
    for(ll i=0;i<n;i++)cout<<ans[i]<<"\n";
    return 0;
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |