Submission #592996

#TimeUsernameProblemLanguageResultExecution timeMemory
592996HanksburgerK blocks (IZhO14_blocks)C++17
100 / 100
62 ms83684 KiB
#include <bits/stdc++.h> using namespace std; int dp[100005][105], mn[100005][105], a[100005]; stack<int> s; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, k; cin >> n >> k; a[0]=1e9; for (int i=1; i<=n; i++) cin >> a[i]; for (int i=0; i<=k; i++) dp[0][i]=mn[0][i]=1e9; dp[0][0]=0; s.push(0); for (int i=1; i<=n; i++) { for (int j=0; j<=k; j++) mn[i][j]=dp[i-1][j]; while (a[s.top()]<=a[i]) { int u=s.top(); s.pop(); for (int j=0; j<=k; j++) mn[i][j]=min(mn[i][j], mn[u][j]); } dp[i][0]=1e9; int u=s.top(); for (int j=1; j<=k; j++) dp[i][j]=min(dp[u][j], mn[i][j-1]+a[i]); s.push(i); } cout << dp[n][k]; 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...