This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
#include <deque>
#include <vector>
#define ll long long
#define vi vector<ll>
#define pii pair<ll, ll>
#define fst first
#define snd second
#define vpi vector<pii>
using namespace std;
const long double EPS = 1e-9;
int n;
ll ar[1000001];
vpi dt;
deque<pii> s;
long double xIntercept(pii a, pii b)
{
	return (long double)(b.snd - a.snd) / (a.fst - b.fst);
}
ll eval(ll x, pii l) {return l.fst * x + l.snd;}
int main()
{
	ios :: sync_with_stdio(0); cin.tie(0); cout.tie(0);
	cin >> n;
	int curMax = 0;
	for (int i = 0; i < n; i++)
	{
		cin >> ar[i];
		if (ar[i] > ar[curMax])
		{
			dt.push_back({ar[curMax], i - curMax});
			curMax = i;
		}
	}
	dt.push_back({ar[curMax], n - curMax});
	s.push_back({n, 0});
	int curSZ = 0;
	for (int i = 0; i < dt.size(); i++)
	{
		// cout << dt[i].fst << " " << dt[i].snd << "\n";
		while (s.size() > 1 && eval(dt[i].fst, s[0]) >= eval(dt[i].fst, s[1])) {s.pop_front();}
		curSZ += dt[i].snd;
		pii l = {n - curSZ, eval(dt[i].fst, s[0])};
		while (s.size() > 1 && xIntercept(s.back(), l) - xIntercept(s.back(), s[s.size() - 2]) <= -EPS) {s.pop_back();}
		s.push_back(l);
	}
	cout << s.back().snd << "\n";
	return 0;
}
Compilation message (stderr)
Discharging.cpp: In function 'int main()':
Discharging.cpp:44:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < dt.size(); i++)
                  ~~^~~~~~~~~~~| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |