Submission #766947

#TimeUsernameProblemLanguageResultExecution timeMemory
766947aris12345678K blocks (IZhO14_blocks)C++14
53 / 100
1073 ms4436 KiB
#include <bits/stdc++.h>
using namespace std;

const int mxN = 1e5+5;
const int mxK = 105;
int a[mxN], dp[mxN][mxK];

int main() {
    int n, k;
    scanf("%d %d", &n, &k);
    for(int i = 1; i <= n; i++) {
        scanf("%d", &a[i]);
        dp[i][1] = max(dp[i-1][1], a[i]);
    }
    // for(int i = 1; i <= n; i++)
        // cout << dp[i][1] << " ";
    // cout << "\n";
    for(int j = 2; j <= k; j++) {
        for(int i = 1; i <= n; i++) dp[i][j] = INT_MAX;
        for(int i = j; i <= n; i++) {
            int mx = 0;
            for(int u = i; u >= j; u--) {
                mx = max(mx, a[u]);
                // cout << dp[i][j] << " " << mx << " " << dp[u-1][j-1] << "\n";
                dp[i][j] = min(dp[i][j], mx+dp[u-1][j-1]);
            }
            // cout << dp[i][j] << " ";
        }
        // cout << "\n";
    }
    printf("%d\n", dp[n][k]);
    return 0;
}

Compilation message (stderr)

blocks.cpp: In function 'int main()':
blocks.cpp:10:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   10 |     scanf("%d %d", &n, &k);
      |     ~~~~~^~~~~~~~~~~~~~~~~
blocks.cpp:12:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   12 |         scanf("%d", &a[i]);
      |         ~~~~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...