#include <bits/stdc++.h>
#pragma GCC optimize("O2")
using namespace std;
#define int long long
#define ll long long
#define vc vector<char>
#define vi vector<int>
#define vb vector<bool>
#define pi pair<int, int>
#define ppi pair<pair<int, int>, int>
#define pip pair<int, pair<int, int>>
#define multi multiset<int>
#define multp multiset<pi>
#define endl '\n'
mt19937 rng(chrono::system_clock::now().time_since_epoch().count());
const int MOD = 1e9 + 7;
const int MAXN = 1e6+5;
const int S = 350;
void solve() {
int n;
cin >> n;
vi a(n+1);
for (int i = 1; i <= n; i++) cin >> a[i];
vi dp(n+1, INT64_MAX);
dp[0] = 0;
for (int i = 1; i <= n; i++) {
int mx = a[i];
for (int j = i-1; j >= 0; j--) {
dp[i] = min(dp[i], dp[j] + (n - j) * mx);
if (j != 0) { mx = max(mx, a[j]); }
}
}
cout << dp[n] << endl;
}
/*
*/
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr); cout.tie(nullptr);
bool test = 0;
int t;
if (!test) t = 1;
else cin >> t;
while (t--) {
solve();
}
return 0;
}
| # | 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... |