Submission #1288949

#TimeUsernameProblemLanguageResultExecution timeMemory
1288949ofozDischarging (NOI20_discharging)C++20
0 / 100
1097 ms15952 KiB
#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);
    for (int &x : a) cin >> x;
    vi dp(n+1, INT32_MAX);
    dp[n] = 0;
    for (int i = n-1; i >= 0; i--) {
        int mx = a[i];
        for (int j = i+1; j <= n; j++) {
            dp[i] = min(dp[i], dp[j] + (n - i) * mx);
            if (j != n) mx = max(mx, a[j]);
        }
    }
    cout << dp[0] << 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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...