제출 #1142220

#제출 시각아이디문제언어결과실행 시간메모리
1142220NurislamK blocks (IZhO14_blocks)C++17
0 / 100
0 ms328 KiB
#include <bits/stdc++.h> using namespace std; #define int long long signed main(){ int n, k; cin >> n >> k; int inf = 1e9; vector<vector<int>> dp( n + 1, vector<int> (k+1, inf)); vector<int> a(n+1); for(int i = 1; i <= n; i++){ cin >> a[i]; dp[i][1] = max(dp[i-1][1], a[i]); if(i == 1)dp[i][1] = a[i]; } for(int j = 2; j <= k; j ++ ){ vector<array<int,2>> v; for(int i = j; i <= n; i++){ int mn = dp[i-1][j-1]; while(v.size() && v.back()[0] <= a[i]) { mn = min(mn, v.back()[1]); v.pop_back(); }; dp[i][j] = mn + a[i]; if(v.size())dp[i][j] = min(dp[i][j], v.back()[0] + v.back()[1]); v.push_back({a[i], mn}); } } cout << dp[n][k] << '\n'; };
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...