Submission #636998

#TimeUsernameProblemLanguageResultExecution timeMemory
636998bonkStove (JOI18_stove)C++14
20 / 100
1100 ms196216 KiB
#include <bits/stdc++.h>
#define int long long

using namespace std;

const int N = 5002;
int dp[N][N], a[N];
int n, k;

int f(int idx, int k){
    if(k < 0) return 1e18;
    if(idx > n) return 0;
    int &cur = dp[idx][k];

    if(cur != -1) return cur;

    cur = 1e18;
    for(int i = idx; i <= n; i++){
        cur = min(cur, f(i + 1, k - 1) + a[i] - a[idx] + 1);
    }

    return cur;
}

int32_t main(){
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    memset(dp, -1, sizeof(dp));
    cin >> n >> k;
    for(int i = 1; i <= n; i++) cin >> a[i];

    cout << f(1, k) << '\n';

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...