#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){
ans[pom.ss.ss]-=a;
ans[pom.ss.ff]+=pom.ff+a;
}
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... |