제출 #1179947

#제출 시각아이디문제언어결과실행 시간메모리
1179947bbartekGrowing Vegetables is Fun 4 (JOI21_ho_t1)C++20
0 / 100
0 ms324 KiB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
#define st first
#define nd second
#define pb push_back

const int maxn = 2e5+7;

ll liczby[maxn];
ll pref[maxn];
ll wys_pref[maxn];
ll suf[maxn];
ll wys_suf[maxn];

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

    int n;
    cin>>n;

    for(int i=1;i<=n;i++){
        cin>>liczby[i];
    }

    ll licznik = 0;

    pref[1] = 0;
    wys_pref[1] = liczby[1];
    for(int i=2;i<=n;i++){
        if(liczby[i] <= liczby[i-1]){
            licznik += liczby[i-1]-liczby[i]+1;
        }
        pref[i] = licznik;
        wys_pref[i] = liczby[i] + licznik;
    }

    licznik = 0;
    suf[n] = 0;
    wys_suf[n] = liczby[n];
    for(int i=n-1;i>=1;i--){
        if(liczby[i] <= liczby[i+1]){
            licznik += liczby[i+1]-liczby[i]+1;
        }
        suf[i] = licznik;
        wys_suf[i] = liczby[i] + licznik;
    }

    ll wyn = 1e9;

    ll akt;
    for(int i=1;i<=n;i++){
        akt = pref[i] + suf[i];
        if(wys_pref[i] > liczby[i] && wys_suf[i] > liczby[i]){
            akt -= (max(wys_pref[i],wys_suf[i]) - min(wys_pref[i],wys_suf[i]));
        }
        wyn = min(wyn,akt);
    }

    cout<<wyn<<"\n";

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