Cod sursa(job #407278)

Utilizator prisonbreakMichael Scofield prisonbreak Data 2 martie 2010 10:43:54
Problema Ferma Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <cstdio>
#include <string>
#define nmax 10005
#define kmax 1005

using namespace std;

int N, K, a [nmax];
int dp [kmax][nmax];
int i, j, k, sum [nmax], maxim, x;
int main () {

	freopen ("ferma.in", "r", stdin);
	freopen ("ferma.out", "w", stdout);
	scanf ("%d%d\n", &N, &K);
	for (i = 1; i <= N; i++) {
		scanf ("%d", &x);
		sum [i] = sum [i - 1] + x;
	}
	for (i = 1; i <= K; i++)
		for (j = 1; j <= N; j++) {
			maxim = -10000;
			for (k = 1; k < j; k++)
				if (sum [j] - sum [k] + dp [i - 1][k] > maxim)
					maxim = sum [j] - sum [k] + dp [i - 1][k];
			dp [i][j] = max (dp [i][j - 1], maxim); 
		}	
	printf ("%d\n", dp [K][N]);
	return 0;
}