Submission #335399

#TimeUsernameProblemLanguageResultExecution timeMemory
335399lauranDischarging (NOI20_discharging)C++14
11 / 100
137 ms14304 KiB
#include <bits/stdc++.h> using namespace std; const int NMAX = 1e6 + 5; const long long INF = 1e17; int n; int T[NMAX]; long long dp[NMAX]; bool sub3() { for (int i = 1; i < n; i++) if (T[i] > T[i + 1]) return 0; return 1; } bool sub4() { for (int i = 1; i < n; i++) if (T[i] < T[i + 1]) return 0; return 1; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cin >> n; for (int i = 1; i <= n; i++) cin >> T[i]; if (sub4()) { long long ans = 0, maxim = 0; for (int i = 1; i <= n; i++) { maxim = max(maxim, (long long)T[i]); ans += maxim; } cout << ans; return 0; } dp[n] = T[n]; for (int i = n - 1; i >= 1; i--) { int maxT = T[i]; dp[i] = INF; for (int j = i; j <= n; j++) { maxT = max(maxT, T[j]); dp[i] = min(dp[i], maxT * (n - i + 1) + dp[j + 1]); } } cout << dp[1]; 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...