Submission #1165203

#TimeUsernameProblemLanguageResultExecution timeMemory
1165203pinbuGrowing Vegetables is Fun 4 (JOI21_ho_t1)C++20
0 / 100
1 ms396 KiB
#include<bits/stdc++.h>

#define fi first
#define se second
#define int long long
#define sz(v) (int)v.size()

using namespace std;

const int MAXN = 2e5 + 5;

int n,a[MAXN], prefix[MAXN], suffix[MAXN];

signed main() {
	ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin >> n;
	for (int i = 1;i <= n;i++) cin >> a[i];
	vector<int> diff;
	for (int i = 1;i < n;i++) {
		diff.push_back(a[i] - a[i + 1]);
	}

	if (diff[0] >= 0) prefix[0] = diff[0] + 1;
	else prefix[0] = 0;
	
	for (int i = 1;i < sz(diff);i++) {
		if (diff[i] >= 0) prefix[i] = prefix[i - 1] + diff[i] + 1;
		else prefix[i] = prefix[i - 1];
	}
	
	if (diff[sz(diff) - 1] <= 0) suffix[sz(diff) - 1] = abs(diff[sz(diff) - 1]) + 1;
	else suffix[sz(diff) - 1] = 0;
	
	for (int i = sz(diff) - 2;i >= 0;i--) {
		if (diff[i] <= 0) suffix[i] = suffix[i + 1] + abs(diff[i]) + 1;
		else suffix[i] = suffix[i + 1];
	}
	// ---- ++++
	int ans = 1e18;
	for (int i = 0;i < sz(diff);i++) {
		int p = (i == 0) ? 0 : prefix[i - 1];
		int s = suffix[i];
		ans = min(ans, max(p,s));
	}
	cout << ans;
	
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...