Submission #444502

#TimeUsernameProblemLanguageResultExecution timeMemory
444502paliloSnowball (JOI21_ho_t2)C++17
100 / 100
106 ms8280 KiB
#include <bits/stdc++.h> using namespace std; template <class T> bool chmin(T& _old, T _new) { return _old > _new && (_old = _new, true); } template <class T> bool chmax(T& _old, T _new) { return _old < _new && (_old = _new, true); } int main() { cin.tie(nullptr)->sync_with_stdio(false); #ifdef palilo freopen("in", "r", stdin); freopen("out", "w", stdout); #endif int n, q; cin >> n >> q; vector<int64_t> a(n); for (auto& x : a) { cin >> x; } vector<pair<int64_t, int>> intervals(n - 1); for (int i = 0; i < n - 1; ++i) { intervals[i] = {a[i + 1] - a[i], i}; } sort(intervals.begin(), intervals.end(), [&](const auto& lhs, const auto& rhs) { return lhs.first < rhs.first; }); int ptr = 0; int64_t lmax = 0, rmax = 0; vector<int64_t> ans(n); for (int64_t w, psum = 0; q--;) { cin >> w; psum += w; if (psum < 0) { for (chmin(lmax, psum); ptr != n - 1 && intervals[ptr].first <= rmax - lmax; ++ptr) { ans[intervals[ptr].second] += rmax; ans[intervals[ptr].second + 1] += intervals[ptr].first - rmax; } } else { for (chmax(rmax, psum); ptr != n - 1 && intervals[ptr].first <= rmax - lmax; ++ptr) { ans[intervals[ptr].second + 1] -= lmax; ans[intervals[ptr].second] += intervals[ptr].first + lmax; } } } ans.front() -= lmax; ans.back() += rmax; for (; ptr != n - 1; ++ptr) { ans[intervals[ptr].second] += rmax; ans[intervals[ptr].second + 1] -= lmax; } for (const auto& x : ans) { cout << x << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...