#include <iostream>
#include <vector>
using namespace std;
const int N = 1<<18;
long long Pre[N], Mn[N], Mx[N];
vector<int> distribute_candies(vector<int> c, vector<int> l, vector<int> r, vector<int> v){
int n = c.size(), q = l.size();
for (int i=1;i<=q;i++){
Pre[i] = Pre[i-1] + v[i-1];
Mn[i] = min(Mn[i-1], Pre[i]);
Mx[i] = max(Mx[i-1], Pre[i]);
// cout<<Pre[i]<<'\n';
}
// cout<<endl;
vector<int> ans;
for (int i=0;i<n;i++){
if (Mx[q] - Mn[q] < c[i]){
ans.push_back(Pre[q]);
continue;
}
int l = 1, r = q+1;
while (l + 1 < r){
int m = (l + r) / 2;
// cout<<m<<' '<<Mx[m]<<' '<<Mn[m]<<endl;
if (Pre[m] - Mn[m] >= c[i] or Mx[m] - Pre[m] >= c[i])
l = m;
else
r = m;
}
// cout<<i<<' '<<l<<endl;
if (Pre[l] == Mx[l])
ans.push_back(c[i] + Pre[q] - Pre[l]);
else
ans.push_back(Pre[q] - Pre[l]);
}
return ans;
}