제출 #330740

#제출 시각아이디문제언어결과실행 시간메모리
330740GurbanK개의 묶음 (IZhO14_blocks)C++17
53 / 100
1073 ms8684 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;

const int N = 1e2+5;
const int maxn=1e5+5;
int n,k;
ll a[maxn],dp[maxn][N];

int f(int pos,int num){
	if(dp[pos][num]) return dp[pos][num];
	ll mx = 0,jog = 1e18;
	for(int i = pos;i <= n-num+1;i++){
		mx = max(mx,a[i]);
		jog = min(jog,mx+f(i+1,num-1));
	}
	return dp[pos][num]=jog;
}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);

	cin >> n >> k;
	for(int i = 1;i <= n;i++) cin >> a[i];
	ll mx = 0;
	for(int i = n;i >= 1;i--){
		mx = max(mx,a[i]);
		dp[i][1] = mx;
	}
	cout<<f(1,k);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...