제출 #700891

#제출 시각아이디문제언어결과실행 시간메모리
700891bebraSnowball (JOI21_ho_t2)C++17
33 / 100
2553 ms2344 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

#define dbg(x) cerr << #x << ": " << x << endl;



int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, q;
    cin >> n >> q;
    vector<ll> a(n);
    for (auto& x : a) {
        cin >> x;
    }

    ll max_value = 0;
    ll min_value = 0;

    ll curr_value = 0;
    vector<ll> ans(n);
    vector<ll> space(n - 1);
    for (int i = 0; i < n - 1; ++i) {
        space[i] = a[i + 1] - a[i];
    }
    while (q--) {
        ll w;
        cin >> w;
        curr_value += w;
        if (w > 0) {
            if (curr_value <= max_value) continue;
            
            ll d = curr_value - max_value;
            max_value = max(max_value, curr_value);

            ans[n - 1] += d;
            for (int i = 0; i < n - 1; ++i) {
                ll r = min(d, space[i]);
                space[i] -= r;
                ans[i] += r;
            }
        } else {
            if (curr_value >= min_value) continue;

            ll d = min_value - curr_value;
            min_value = min(min_value, curr_value);

            ans[0] += d;
            for (int i = 1; i < n; ++i) {
                ll r = min(d, space[i - 1]);
                space[i - 1] -= r;
                ans[i] += r;
            }
        }
    }


    for (auto x : ans) {
        cout << x << '\n';
    }

    return 0;
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...