Pagini recente » Cod sursa (job #3131449) | Cod sursa (job #598006) | Cod sursa (job #2841248) | Cod sursa (job #1859513) | Cod sursa (job #635770)
Cod sursa(job #635770)
#include <fstream>
using namespace std;
ifstream fi ("ferma2.in");
ofstream fo ("ferma2.out");
const int dim = 1005;
int Po[dim][dim], Pv[dim][dim], Pd[dim][dim], A[dim][dim], N, K, S, SM;
void back (int x1, int y1, int x2, int y2, int k)
{
if (k == K)
{
SM = S > SM ? S : SM;
return;
}
S += Po[x2][y2] - Po[x2][y1-1];
back (x1, y1, x2-1, y2-1, k+1);
S -= Po[x2][y2] - Po[x2][y1-1];
S += Pv[x2][y1] - Pv[x1-1][y1];
back (x1+1, y1+1, x2, y2, k+1);
S -= Pv[x2][y1] - Pv[x1-1][y1];
S += Pd[x2][y2] - Pd[x1-1][y1-1];
back (x1+1, y1, x2, y2-1, k+1);
S -= Pd[x2][y2] - Pd[x1-1][y1-1];
}
void cit ()
{
int i, j;
fi >> N >> K;
for (i = 1; i <= N; i++)
for (j = 1; j <= i; j++)
{
fi >> A[i][j];
Po[i][j] = A[i][j] + Po[ i ][j-1];
Pv[i][j] = A[i][j] + Pv[i-1][ j ];
Pd[i][j] = A[i][j] + Pd[i-1][j-1];
}
}
int main ()
{
cit ();
back (1, 1, N, N, 0);
fo << SM;
return 0;
}