Pagini recente » Cod sursa (job #1545167) | Cod sursa (job #2691745) | Cod sursa (job #753517) | Cod sursa (job #34841) | Cod sursa (job #474729)
Cod sursa(job #474729)
#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;
}