Pagini recente » Cod sursa (job #393369) | Cod sursa (job #251038) | Cod sursa (job #2396224) | Cod sursa (job #924063) | Cod sursa (job #861053)
Cod sursa(job #861053)
#include <vector>
#include <list>
#include <queue>
#include <deque>
#include <stack>
#include <string>
#include <map>
#include <set>
#include <cstdio>
#include <math.h>
#include <cstdlib>
#include <ctime>
#include <cassert>
#include <cstring>
#include <fstream>
using namespace std;
#define i64 long long
#define pii pair<int,int>
#define x first
#define y second
#define mp make_pair
#define ALL(x) (x).begin(), (x).end()
#define REP(i,n) for(int i = 0;i<(int)n;++i)
ifstream cin("ferma.in");
ofstream cout("ferma.out");
const int inf = int(2e9);
const int NMAX = 10002;
int N, K;
int p[NMAX], s[NMAX];
int bst[2][NMAX];
int main()
{
cin>>N>>K;
for(int i = 1;i <= N;i++) {
cin>>p[i];
s[i] = s[i - 1] + p[i];
}
int line = 0;
for(int i = 1;i <= K;i++,line = 1 - line) {
for(int j = i;j <= N;j++) {
bst[1 - line][j] = max(0,bst[1 - line][j - 1]);
for(int k = i - 1;k < j;k++) {
bst[1 - line][j] = max(bst[1 - line][j],bst[line][k] + s[j] - s[k]);
}
}
}
cout<<max(0,bst[line][N]);
return 0;
}