#include <bits/stdc++.h>
using namespace std;
int findMax(int arr[], int n, int k)
{
int dp[k+1][n] = {};
for(int i=0;i<k+1;i++){
for(int j=0;j<n;j++)dp[i][j]=INT_MAX;
}
int sum1=0;
for (int i=0;i<n;i++){
sum1+=arr[i];
dp[1][i]=sum1;
// sum1+=arr[i];
}
// dp[0][n]=sum1;
for(int i=2;i<=k;i++){
for(int j=0;j<n;j++){
int ans;
sum1=arr[j];
for(int l=j-1;l>=0;l--){
ans=max(dp[i-1][l],sum1);
dp[i][j]=min(dp[i][j],ans);
sum1+=arr[l];
}
dp[i][j]=min(dp[i][j],sum1);
}
}
return dp[k][n-1];
}
int main() {
int arr[] = { 10, 40, 10};
int n = sizeof(arr) / sizeof(arr[0]);
int k = 2;
cout << findMax(arr, n, k) << endl;
// your code goes here
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBmaW5kTWF4KGludCBhcnJbXSwgaW50IG4sIGludCBrKSAKewoJaW50IGRwW2srMV1bbl0gPSB7fTsKCWZvcihpbnQgaT0wO2k8aysxO2krKyl7CgkJZm9yKGludCBqPTA7ajxuO2orKylkcFtpXVtqXT1JTlRfTUFYOwoJfQoJaW50IHN1bTE9MDsKCWZvciAoaW50IGk9MDtpPG47aSsrKXsKCQlzdW0xKz1hcnJbaV07CgkJZHBbMV1baV09c3VtMTsKCQkvLyBzdW0xKz1hcnJbaV07Cgl9CgkvLyBkcFswXVtuXT1zdW0xOwoJZm9yKGludCBpPTI7aTw9aztpKyspewoJCWZvcihpbnQgaj0wO2o8bjtqKyspewoJCQlpbnQgYW5zOwoJCQlzdW0xPWFycltqXTsKCQkJZm9yKGludCBsPWotMTtsPj0wO2wtLSl7CgkJCQlhbnM9bWF4KGRwW2ktMV1bbF0sc3VtMSk7CgkJCQlkcFtpXVtqXT1taW4oZHBbaV1bal0sYW5zKTsKCQkJCXN1bTErPWFycltsXTsKCQkJfQoJCQlkcFtpXVtqXT1taW4oZHBbaV1bal0sc3VtMSk7CgkJfQoJfQoJcmV0dXJuIGRwW2tdW24tMV07Cn0KCmludCBtYWluKCkgewoJaW50IGFycltdID0geyAxMCwgNDAsIDEwfTsgCiAgICBpbnQgbiA9IHNpemVvZihhcnIpIC8gc2l6ZW9mKGFyclswXSk7IAogICAgaW50IGsgPSAyOyAKICAgIGNvdXQgPDwgZmluZE1heChhcnIsIG4sIGspIDw8IGVuZGw7IAoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJcmV0dXJuIDA7Cn0=