Cod sursa(job #1826)

Utilizator zombie_testeala bala portocala si mandarina zombie_teste Data 14 decembrie 2006 20:27:08
Problema Ferma Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NMAX 10024
#define INF 2e9
#define MAX(a, b) ( (a) < (b) ? (b) : (a) )

int A[NMAX];
int B1[NMAX], B2[NMAX];
int V[NMAX], N, K;
int i, j, Sol;

int main()
{
     freopen("ferma.in", "r", stdin);
     freopen("ferma.out", "w", stdout);

     scanf("%d %d", &N, &K);

     for (i = 1; i <= N; i++) scanf("%d", &V[i]);

     K++;

     for (i = 1; i <= K; i++)
     {
            if ( i == K ) Sol = MAX(A[N], B1[N]);

            for (j = 1; j <= N; j++)
            {

                A[j] = MAX( MAX(A[j-1] + V[j], B1[j] + V[j]), V[j]);

                B2[j] = MAX(B2[j-1], A[j-1]);

            }

            memcpy(B1, B2, sizeof(B2));
            memset(B2, 0, sizeof(B2));
     }


     Sol = MAX(Sol, A[N]);

     if ( Sol < 0 )   printf("0\n");
               else   printf("%d\n", Sol);


     fclose(stdin);
     fclose(stdout);
     return 0;
}