제출 #1324218

#제출 시각아이디문제언어결과실행 시간메모리
1324218sh_qaxxorov_571Growing Vegetables is Fun 4 (JOI21_ho_t1)C++20
100 / 100
19 ms6600 KiB
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

/**
 * JOI 2021 Final Round - Biba-herbs
 * Vaqt murakkabligi: O(N)
 */

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

    int N;
    cin >> N;
    vector<long long> A(N + 1);
    for (int i = 1; i <= N; i++) {
        cin >> A[i];
    }

    if (N == 1) {
        cout << 0 << endl;
        return 0;
    }

    vector<long long> diff(N);
    for (int i = 1; i < N; i++) {
        diff[i] = A[i + 1] - A[i];
    }

    // pref[i] - 1-dan i-gacha o'suvchi qilish uchun kerakli amallar
    vector<long long> pref(N + 1, 0);
    for (int i = 1; i < N; i++) {
        long long cost = 0;
        if (diff[i] <= 0) {
            cost = abs(diff[i]) + 1;
        }
        pref[i + 1] = pref[i] + cost;
    }

    // suff[i] - i-dan N-gacha kamayuvchi qilish uchun kerakli amallar
    vector<long long> suff(N + 1, 0);
    for (int i = N - 1; i >= 1; i--) {
        long long cost = 0;
        if (diff[i] >= 0) {
            cost = diff[i] + 1;
        }
        suff[i] = suff[i + 1] + cost;
    }

    long long min_ops = -1;
    for (int k = 1; k <= N; k++) {
        // k cho'qqi bo'lganda kerakli sug'orishlar soni
        long long current_ops = max(pref[k], suff[k]);
        if (min_ops == -1 || current_ops < min_ops) {
            min_ops = current_ops;
        }
    }

    cout << min_ops << endl;

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...