Cod sursa(job #530384)

Utilizator darrenRares Buhai darren Data 7 februarie 2011 18:04:24
Problema Ferma Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
#include <algorithm>

using namespace std;

int N, K;
int V[10002], S[10002];
int Smax[1002][10002];

int main()
{
    ifstream fin("ferma.in");
    ofstream fout("ferma.out");

    fin >> N >> K;
    for (int i = 1; i <= N; ++i)
    {
        fin >> V[i];
        S[i] = S[i - 1] + V[i];
    }

    for (int i = 1; i <= K; ++i)
    {
        int maxnow = 0;
        for (int j = 1; j <= N; ++j)
        {
            Smax[i][j] = max(Smax[i][j - 1], maxnow + S[j]);
            maxnow = max(maxnow, Smax[i - 1][j] - S[j]);
        }
    }

    int maxnow = 0, result;
    for (int i = 1; i < N; ++i)
        maxnow = max(maxnow, Smax[K][i] - S[i]);
    result = maxnow + S[N];

    fout << max(result, Smax[K][N]);


    fin.close();
    fout.close();
}