제출 #955839

#제출 시각아이디문제언어결과실행 시간메모리
955839gaoxam123K개의 묶음 (IZhO14_blocks)C++14
53 / 100
1052 ms41816 KiB
// https://oj.uz/problem/view/IZhO14_blocks
#include <bits/stdc++.h>
using namespace std;

int N, K;
int a[100005], dp[105][100005];

int main() {
    cin >> N >> K;
    memset(dp, 1000000, sizeof(dp));
    for(int i = 1; i <= N; i ++) {
        cin >> a[i];
    }
    // THIS VERSION IS NOT OPTIMIZED, BUT WORKS PROPERLY
    for(int i = 1; i <= K; i ++) {
        for(int j = i; j <= N; j ++) {
            if(i == 1) {
                if(j == 1) {
                    dp[i][j] = a[j];
                }
                else {
                    dp[i][j] = max(dp[i][j - 1], a[j]);
                }
            }
            else if(i == j) {
                dp[i][j] = dp[i - 1][j - 1] + a[j];
            }
            else {
                int mx = a[j];
                for(int k = j - 1; k >= 1; k --) {
                    dp[i][j] = min(dp[i][j], dp[i - 1][k] + mx);
                    mx = max(mx, a[k]);
                }
            }       
        }
    }
    cout << dp[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...