Submission #1333577

#TimeUsernameProblemLanguageResultExecution timeMemory
1333577yc11Stove (JOI18_stove)C++20
20 / 100
1098 ms36076 KiB
#include<bits/stdc++.h>
using namespace std;
vector<vector<int> > dp;
vector<int> n1;
int hi(int x, int y){
    if (dp[x][y]!=-1) return dp[x][y];

    if (y>x) return x+1;
    if (y==0) return 1e9;
    if (x==0) return 1;

    int ans = 1e9;
    for (int i = 0;i<x;i++){
        ans = min(ans,hi(x-1,y-1)+1);

        ans = min(ans,hi(x-1,y)+n1[x]-n1[x-1]);

    }

    return dp[x][y]=ans;
    }
signed main(){
  ios_base::sync_with_stdio(false);
  cin.tie(0);
    int n,k;
    cin>>n>>k;
    for (int i = 0;i<n;i++){
        int x;
        cin>>x;
        n1.push_back(x);
    }
    dp.resize(n);
    for (int i = 0;i<n;i++) dp[i].assign(n+1,-1);

    cout<<hi(n-1,k);
    return 0;
    }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...