Cod sursa(job #1814)

Utilizator zombie_testeala bala portocala si mandarina zombie_teste Data 14 decembrie 2006 20:04:45
Problema Ferma Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NMAX 1024
#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, k, 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(A[j-1], B1[j]) + V[j];
                B2[j] = MAX(B2[j-1], A[j-1]);

            }

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


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

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


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