#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
#define len(v) (int)((v).size())
const ll inf = 1e18;
inline void solve(){
int n, q;
cin >> n >> q;
vector<ll> a(n), b(q);
for (int i = 0; i < n; ++i){
cin >> a[i];
}
for (int i = 0; i < q; ++i){
cin >> b[i];
}
vector<ll> lf(q + 1, 0), rt(q + 1, 0);
ll d = 0;
for (int i = 0; i < q; ++i){
d += b[i];
lf[i + 1] = max(lf[i], -d);
rt[i + 1] = max(rt[i], d);
}
vector<ll> ans(n, 0);
for (int i = -1; i < n; ++i){
ll d = inf;
if (i >= 0 && i + 1 < n){
d = a[i + 1] - a[i];
}
int li = 0, ri = q;
while (ri - li > 1){
int mi = (li + ri) / 2;
if (lf[mi] + rt[mi] > d){
ri = mi;
}
else{
li = mi;
}
}
ll x = min(lf[ri], d - rt[li]);
ll y = min(rt[ri], d - lf[li]);
if (i >= 0) ans[i] += y;
if (i + 1 < n) ans[i + 1] += x;
}
for (int i = 0; i < n; ++i){
cout << ans[i] << '\n';
}
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
cout.precision(60);
int t = 1;
// cin >> t;
while (t--) {
solve();
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |