#include<bits/stdc++.h>
using namespace std;
#define S second
#define F first
#define ll long long
//#define int long long
//#pragma GCC optimize("Ofast, unroll-loop")
//#pragma GCC target("avx,avx2")
#pragma GCC optimize("O3")
const int inf=0x3f3f3f3f;
const ll inff=0x3f3f3f3f3f3f3f3f;
const int X=1000000007;
ll pre[200005], mn[200005], mx[200005], ans[200005];
ll x[200005], w[200005];
signed main(){
ios::sync_with_stdio(0), cin.tie(0);
int n, q; cin >> n >> q;
for(int i=1 ; i<=n ; i++) cin >> x[i];
for(int i=1 ; i<=q ; i++){
cin >> w[i];
pre[i]=pre[i-1]+w[i];
mn[i]=min(mn[i-1],pre[i]);
mx[i]=max(mx[i-1],pre[i]);
}
ans[1]+=-mn[q], ans[n]+=mx[q];
for(int i=1 ; i<n ; i++){
ll d=x[i+1]-x[i];
if(mx[q]-mn[q]<=d) ans[i]+=mx[q], ans[i+1]-=mn[q];
else{
int t=0;
for(int jump=q ; jump ; jump>>=1){
while(t+jump<q&&mx[t+jump]-mn[t+jump]<d) t+=jump;
}
if(w[t+1]<0) ans[i]+=mx[t], ans[i+1]+=d-mx[t];
else ans[i]+=d+mn[t], ans[i+1]-=mn[t];
}
}
for(int i=1 ; 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... |