Submission #602233

#TimeUsernameProblemLanguageResultExecution timeMemory
602233MherGrowing Vegetables is Fun 4 (JOI21_ho_t1)C++14
40 / 100
1092 ms2604 KiB
#include <iostream>
#include <algorithm>

using namespace std;

const int N = 200003;

int n;
int a[N];
int dl[N], dr[N];
long long fa = 1e18;

int main() {
  cin >> n;
  for (int i = 1; i <= n; i++)
  {
    cin >> a[i];    
  }
  for (int k = 1; k <= n; k++)
  {
    for (int i = 1; i <= n; i++)
    {
      dl[i] = a[i] - a[i - 1];
      dr[i] = a[i] - a[i + 1];
    }
    int l = 1, r = n;
    long long ans = 0;
    while (l != r)
    {
      //cout << l << ' ' << r << ' ' << ans << endl;
      if (r == k)
      {
        int d = max(-dl[l] + 1, 0);
        ans += d;
        dl[l] += d;
        dr[r] += d;
        l++;
      }
      else if (l == k)
      {
        int d = max(-dr[r] + 1, 0);
        ans += d;
        dl[l] += d;
        dr[r] += d;
        r--;
      }
      else if (dl[l] > dr[r])
      {
        int d = max(-dl[l] + 1, 0);
        ans += d;
        dl[l] += d;
        dr[r] += d;
        l++;
      }
      else
      {
        int d = max(-dr[r] + 1, 0);
        ans += d;
        dl[l] += d;
        dr[r] += d;
        r--;
      }
    }
    ans += max(max(-dl[l] + 1, 0), max(-dr[r] + 1, 0));
    //cout << ans << endl;
    fa = min(ans, fa);  
  }
  cout << fa;
  return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...