Pagini recente » Cod sursa (job #355206) | Cod sursa (job #2964824) | Cod sursa (job #632738) | Cod sursa (job #3167244) | Cod sursa (job #182535)
Cod sursa(job #182535)
#include <stdio.h>
#define NM 10001
#define Max(a, b) ((a) > (b) ? (a) : (b))
int n, m, v[NM*10];
int a[2][NM], b[2][NM];
int i, j, k, l1, l2;
int main()
{
freopen("ferma.in", "r", stdin);
freopen("ferma.out", "w", stdout);
scanf("%d %d", &n, &m);
for ( i = 1; i <= n; i++ ) scanf("%d", &v[i]);
a[0][0] = b[0][0] = 0;
l1 = 0, l2 = 1;
for ( k = 1; k <= m+1; k++, l1 = !l1, l2 = !l2 )
for ( i = 1; i <= n; i++ )
b[l2][i] = Max(b[l2][i-1], a[l2][i-1]),
a[l2][i] = Max(a[l2][i-1], Max(b[l1][i-1], a[l1][i-1])) + v[i];
printf("%d\n", a[l1][n] >= 0 ? a[l1][n] : 0);
return 0;
}