#include<bits/stdc++.h>
typedef long long ll;
#define pb push_back
#define fr first
#define sc second
using namespace std;
int n,q;
ll arr[200023];
pair<ll,ll>mx[200023],gain[200023];
ll loc=0;
ll ans[200023];
int main(){
ios_base::sync_with_stdio(false);cin.tie(NULL);
cin>>n>>q;
for(int i=1;i<=n;i++){
cin>>arr[i];
}
for(int i=1;i<=q;i++){
mx[i]=mx[i-1];
gain[i]=gain[i-1];
ll x;cin>>x;
loc+=x;
mx[i].fr=min(mx[i].fr,loc);
mx[i].sc=max(mx[i].sc,loc);
gain[i].fr+=mx[i-1].fr-mx[i].fr;
gain[i].sc+=mx[i].sc-mx[i-1].sc;
}
ans[1]-=mx[q].fr;
ans[n]+=mx[q].sc;
for(int i=1;i<n;i++){
int l=0,r=q;
while(l<r){
int m=(l+r+1)/2;
if(mx[m].sc-mx[m].fr<arr[i+1]-arr[i])l=m;
else r=m-1;
}
ans[i]+=gain[l].sc;
ans[i+1]+=gain[l].fr;
if(l!=q){
if(mx[l].fr==mx[l+1].fr){
ans[i]+=arr[i+1]-arr[i]-gain[l].fr-gain[l].sc;
}
else{
ans[i+1]+=arr[i+1]-arr[i]-gain[l].fr-gain[l].sc;
}
}
}
for(int i=1;i<=n;i++){
cout<<ans[i]<<endl;
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |