Submission #1279506

#TimeUsernameProblemLanguageResultExecution timeMemory
1279506hanguyendanghuyGrowing Vegetables is Fun 4 (JOI21_ho_t1)C++20
100 / 100
16 ms1952 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define fi first
#define se second
constexpr ll MAXN=5e5+5,MAXV=1e5,MOD=1e9+7,INF=1e18;
ll n,m,i,j,p,k,ans,dem,st,en,a[MAXN],dp1[MAXN],dp2[MAXN],b[MAXN],last1[MAXN],last2[MAXN];
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
//    freopen("test.inp","r",stdin);
//    freopen("test.out","w",stdout);
    cin>>n;
    for(i=1;i<=n;i++) cin>>a[i];
    ll l=1,r=n,ans=0,need1=0,needr=0;
    while(l<=r){
        if(a[l]+need1>a[l-1]){
            a[l]+=need1;
            l++;
        }
        else if(a[r]+needr>a[r+1]){
            a[r]+=needr;
            r--;
        }
        else{
            ll nl=a[l-1]-(a[l]+need1)+1,nr=a[r+1]-(a[r]+needr)+1;
            if(nl<=nr){
                need1+=nl;
                needr+=nl;
                a[l]+=need1;
                l++;
            }
            else{
                need1+=nr;
                needr+=nr;
                a[r]+=needr;
                r--;
            }
        }
    }
    if(a[r]==a[l]) need1++;
    cout<<need1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...