Submission #1219202

#TimeUsernameProblemLanguageResultExecution timeMemory
1219202trimkusSnowball (JOI21_ho_t2)C++20
33 / 100
2594 ms836 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; int main() { int n, q; cin >> n >> q; vector<ll> a(n); for (auto& i : a) cin >> i; vector<ll> res(n); vector<ll> l(n), r(n); for (int i = 0; i < n; ++i) { l[i] = r[i] = a[i]; } for (int i = 0; i < q; ++i) { ll x; cin >> x; //~ cerr << "Wind x = " << x << "\n"; if (x < 0) { x = -x; for (int i = n - 1; i > 0; --i) { ll till = max(a[i] - x, r[i - 1]); ll add = max(0LL, l[i] - till); res[i] += add; l[i] = min(l[i], till); a[i] -= x; } ll till = a[0] - x; ll add = max(0LL, l[0] - till); res[0] += add; l[0] = min(l[0], till); a[0] -= x; } else { for (int i = 0; i < n - 1; ++i) { ll till = min(a[i] + x, l[i + 1]); ll add = max(0LL, till - r[i]); res[i] += add; r[i] = max(r[i], till); a[i] += x; } ll till = a[n - 1] + x; ll add = max(0LL, till - r[n - 1]); res[n - 1] += add; r[n - 1] = max(r[n - 1], till); a[n - 1] += x; } //~ for (int i = 0; i < n; ++i) { //~ cerr << i << " = " << " l = " << l[i] << " , r = " << r[i] << " , "; //~ cerr << " w = " << res[i] << " , pos = " << a[i] << "\n"; //~ } //~ cerr << endl; } for (auto& i : res) { cout << i << "\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...