Submission #1153782

#TimeUsernameProblemLanguageResultExecution timeMemory
1153782gelastropodPo (COCI21_po)C++20
70 / 70
23 ms2492 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long

signed main() {
	int n, a;
	cin >> n;
	vector<int> A;
	for (int i = 0; i < n; i++) {
		cin >> a;
		A.push_back(a);
	}
	vector<int> diff;
	diff.push_back(A[0]);
	for (int i = 0; i < n - 1; i++) {
		diff.push_back(A[i + 1] - A[i]);
	}
	diff.push_back(-A.back());
	stack<int> stk;
	int ans = 0;
	for (int i = 0; i <= n; i++) {
		if (diff[i] > 0)
			stk.push(diff[i]);
		if (diff[i] < 0) {
			while (!stk.empty() && - diff[i] >= stk.top()) {
				diff[i] += stk.top();
				stk.pop();
				ans++;
			}
			if (!stk.empty() && diff[i] != 0)
				stk.top() += diff[i], ans++;
		}
	}
	cout << ans << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...