#include<bits/stdc++.h>
#define ff first
#define ss second
#define pb push_back
#define int long long
using namespace std;
int n, q, last=0;
vector <pair <int, int> > dist;
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>q;
int x[200005];
for(int i=0; i<n; i++){
cin>>x[i];
if(i==0){
continue ;
}
dist.pb({x[i]-x[i-1], i-1});
}
sort(dist.begin(), dist.end());
map<int,int>ans;
int mn=0, mx=0, sum=0, j=0;
while(q--){
int a;
cin>>a;
if(a==0){
continue ;
}
sum+=a;
int mn1=min(mn, sum), mx1=max(mx, sum);
if(j<n-1){
while(dist[j].ff<=mx1-mn1 and j<n-1){
ans[dist[j].ss]+=mx;
ans[dist[j].ss+1]+=abs(mn);
int diff=dist[j].ff-(mx-mn);
if(mn1==mn){
ans[dist[j].ss]+=diff;
}
else{
ans[dist[j].ss+1]+=diff;
}
j++;
if(j==n-1)break;
}
}
mn=min(mn, sum);
mx=max(mx, sum);
}
while(j<n-1){
ans[dist[j].ss]+=mx;
ans[dist[j].ss+1]+=abs(mn);
j++;
}
ans[0]+=abs(mn);
ans[n-1]+=mx;
for(int i=0; i<n; i++){
cout<<ans[i]<<"\n";
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |