Pagini recente » Cod sursa (job #271235) | Cod sursa (job #2632312)
#include<fstream>
using namespace std;
ifstream fi("ferma.in");
ofstream fo("ferma.out");
int 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,0)<<"\n";
fi.close();
fo.close();
return 0;
}