Cod sursa(job #474729)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 4 august 2010 20:54:12
Problema Ferma Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <stdio.h>
#include <string.h>

int n, k;
int v[1002][2], v1[1002][2];

inline int max (int a, int b) {return a > b ? a : b;}

int main ()
{
	freopen ("ferma.in", "r", stdin);
	freopen ("ferma.out", "w", stdout);
	
	scanf ("%d %d", &n, &k);
	k ++;
	
	int i, j, val, lim;
	
	for (i = 1; i <= n; i ++)
	{
		scanf ("%d", &val);
		
		lim = k;
		if ((i + 1) / 2 < lim)
			lim = (i + 1) / 2;
		
		for (j = 1; j <= lim; j ++)
		{
			v1[j][0] = max (v[j][0], v[j][1]);
			v1[j][1] = max (v1[j - 1][0], v[j][1]) + val;
		}
		
		memcpy (v, v1, sizeof (v1));
	}
	
	if (v[k][1] < 0)
		v[k][1] = 0;
	printf ("%d\n", max (v[k][1], v[k - 1][0]));
	
	return 0;
}