Pagini recente » Cod sursa (job #708052) | Cod sursa (job #1224466) | Cod sursa (job #1100852) | Cod sursa (job #145331) | Cod sursa (job #779916)
Cod sursa(job #779916)
#include <fstream>
using namespace std;
ifstream fin("ferma2.in");
ofstream fout("ferma2.out");
int N , K , dp[305][305][305] , s[3][505][505] , ans , val;
int memo(int k,int x,int y) {
if(K == k) return 0;
if(dp[k][x][y]) return dp[k][x][y];
int dim = N - k;
int xs = x + dim - 1;
int ys = y;
int xd = x + dim - 1;
int yd = y + dim - 1;
dp[k][x][y] = max(memo(k + 1,x,y) + s[0][xd][yd] - s[0][xs][ys - 1],memo(k + 1,x,y + 1) + s[1][xs][ys] - s[1][x - 1][y]);
dp[k][x][y] = max(dp[k][x][y],memo(k + 1,x + 1,y) + s[2][xd][yd] - s[2][x - 1][y - 1]);
return dp[k][x][y];
}
int main()
{
fin>>N>>K;
for(int i = 1;i <= N;++i) {
for(int j = 1;j <= i;++j){
fin>>val;
s[0][i][j] = s[0][i][j - 1] + val;
s[1][i][j] = s[1][i - 1][j] + val;
s[2][i][j] = s[2][i - 1][j - 1] + val;
}
}
fout<<memo(0,1,1);
return 0;
}