#include<bits/stdc++.h>
using namespace std ;
//#define int long long
#define endl '\n'
const int inf = 1e9 ;
const int maxn = 253 ;
int dp[maxn][maxn][maxn] ;
int mi[maxn][maxn][maxn] ;
void solve() {
int n , m ; cin >> n >> m ;
vector<int> a(n + 1) , s(n + 1);
for(int i = 1;i<=n;i++) cin >> a[i] , s[i] = s[i - 1] + a[i] ;
memset(dp , 63 , sizeof dp ) ;
memset(mi , 63 , sizeof mi ) ;
dp[0][0][m] = 0 ;
for(int i = 1;i<=n;i++) {
for(int j = 0 ;j<=m;j++) {
mi[i - 1][j][m] = min(mi[i - 1][j][m] , dp[i - 1][j][m]) ;
for(int k = m - 1;k >= 0 ;k--) {
mi[i - 1][j][k] = min(dp[i - 1][j][k] , mi[i - 1][j][k + 1]) ;
}
}
for(int j = 0 ;j<=m;j++) {
for(int k = 0;k<=j;k++) {
dp[i][j][k] = min(dp[i][j][k] , mi[i - 1][j - k][k] + abs(s[i] - j)) ;
}
}
}
int ans = 1e9 ;
for(int i = 0;i<=m;i++) {
ans = min(ans , dp[n][m][i]) ;
}
cout<<ans<<endl;
}
signed main() {
int t = 1 ;
//cin >> t ;
while(t--) {
solve() ;
}
}
1051. Height Checker | 695. Max Area of Island |
402. Remove K Digits | 97. Interleaving String |
543. Diameter of Binary Tree | 124. Binary Tree Maximum Path Sum |
1465. Maximum Area of a Piece of Cake After Horizontal and Vertical Cuts | 501A - Contest |
160A- Twins | 752. Open the Lock |
1535A - Fair Playoff | 1538F - Interesting Function |
1920. Build Array from Permutation | 494. Target Sum |
797. All Paths From Source to Target | 1547B - Alphabetical Strings |
1550A - Find The Array | 118B - Present from Lena |
27A - Next Test | 785. Is Graph Bipartite |
90. Subsets II | 1560A - Dislike of Threes |
36. Valid Sudoku | 557. Reverse Words in a String III |
566. Reshape the Matrix | 167. Two Sum II - Input array is sorted |
387. First Unique Character in a String | 383. Ransom Note |
242. Valid Anagram | 141. Linked List Cycle |