Cod sursa(job #2201203)

Utilizator Andrei_CotorAndrei Cotor Andrei_Cotor Data 3 mai 2018 21:15:29
Problema Ferma Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include<fstream>
using namespace std;
ifstream fi("ferma.in");
ofstream fo("ferma.out");
long long n,k,i,j,maxim,Dp[1005][10005],Sum[1005],x,rez,val;
int main()
{
    fi>>n>>k;
    for(i=1; i<=n; i++)
    {
        fi>>x;
        Sum[i]=Sum[i-1]+x;
    }
    for(i=1; i<=k; i++)
    {
        Dp[i][i]=Sum[i];
        val=Dp[i-1][i]-Sum[i];
        for(j=i+1; j<=n; j++)
        {
            Dp[i][j]=max(Dp[i][j-1],Sum[j]+val);
            val=max(val,Dp[i-1][j]-Sum[j]);
        }
    }
    rez=Dp[k][n];
    Dp[1][1]=Sum[1];
    for(i=2; i<=n; i++)
        Dp[1][i]=max(Dp[1][i-1],Sum[i]);
    for(i=2; i<=k; i++)
    {
        Dp[i][i]=Sum[i];
        val=Dp[i-1][i]-Sum[i];
        for(j=i+1; j<=n; j++)
        {
            Dp[i][j]=max(Dp[i][j-1],Sum[j]+val);
            val=max(val,Dp[i-1][j]-Sum[j]);
        }
    }
    for(i=k; i<=n; i++)
        rez=max(rez,Dp[k][i]+Sum[n]-Sum[i]);
    fo<<max(rez,0LL)<<"\n";
    fi.close();
    fo.close();
    return 0;
}