Cod sursa(job #221940)

Utilizator alexeiIacob Radu alexei Data 19 noiembrie 2008 05:46:48
Problema Ferma Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include<stdio.h>
#define NMAX 10024
#define KMAX 1024
#define inf 1<<30

int V[NMAX];
int A[KMAX][NMAX],B[KMAX][NMAX];

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

void select_answer(const int N,const int K)
{
     int SOL=0;
     SOL=max( A[K][N], A[K+1][N] );
     printf("%d\n",SOL);
}

int main()
{
    freopen("ferma.in","r",stdin);
    freopen("ferma.out","w",stdout);
    
    int N,K;
    scanf("%d%d",&N,&K);
    ++K;
    
    int i,j;
    for(i=1; i<=N; ++i) scanf("%d",&V[i]);
    
    for(j=1; j<=N; ++j)
    {
             for(i=1; i<=K && i<=j; ++i)
             {
                      A[i][j]=max( max(A[i-1][j-1], A[i][j-1]), B[i-1][j-1] );
                      A[i][j]+=V[j];
                      
                      B[i][j]=max( A[i][j-1], B[i][j-1] );
             }
             
             for(i; i<=K; ++i)
                    A[i][j]=B[i][j]=-inf;
    }       
    
    select_answer(N,K); 
                             
    return 0;
}