Cod sursa(job #861053)

Utilizator ELHoriaHoria Cretescu ELHoria Data 20 ianuarie 2013 22:16:00
Problema Ferma Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#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;
}