解説と解法が同じでガッツポーズ。
$l$を固定して$r$を移動させながら最大値を探します。
$l$から$r$の間の最小値$A_{i}$を求めながら、それまでのみかんの最大値と比較して更新していきます。
計算量は$O(N^2)$ですが、$1 \le N \le 10^4$なのでいけると判断しました。
言語はC++(GCC 9.2.1)でAtCoderのコードテストで確認しています。
#include <bits/stdc++.h>
using namespace std;
int main() {
int N;
long long maxA, result = 0;
cin >> N;
vector<int> A(N);
for (int i = 0; i < N; i++) {
cin >> A[i];
}
for (int i = 0; i < N; i++) {
maxA = A[i];
for (int j = i; j < N; j++) {
if (A[j] < maxA) {
maxA = A[j];
}
result = max(result, (j - i + 1) * maxA);
}
}
cout << result << endl;
}