Pagini recente » Cod sursa (job #1608771) | Cod sursa (job #1800047) | Cod sursa (job #973165) | Cod sursa (job #1608584) | Cod sursa (job #1241055)
#include<fstream>
using namespace std;
ifstream in("ferma2.in");
ofstream out("ferma2.out");
const int nmax = 1006;
int n, k, mat[nmax][nmax], diag[nmax][nmax], sumtot, rasp, sumlin[nmax][nmax], sumcol[nmax][nmax], d[nmax][nmax];
int main(){
int player_unu=0;
in>>n>>k;
k = n - k;
for(int i = 1; i<=n; i++)
{
for(int j = 1; j<=i; j++)
{
in>>mat[i][j];
sumtot += mat[i][j];
sumlin[i][j] = sumlin[i][j - 1] + mat[i][j];
sumcol[i][j] = sumcol[i - 1][j] + mat[i][j];
diag[i][j] = diag[i - 1][j - 1] + mat[i][j];
}
}
for(int i = 1 ; i<=k ; i++)
{
for(int j = 1 ; j<=k ; j++)
{
d[1][1] += mat[i][j];
}
}
rasp = d[1][1];
for(int i = 2 ; i<=n - k + 1 ; i++)
{
d[i][1] = d[i - 1][1] - diag[i + k - 2][k] + sumlin[i + k - 1][k];
rasp = min(rasp, d[i][1]);
for(int j = 2 ; j <= i ; ++ j)
{
d[i][j] = d[i][j - 1] + diag[i + k - 1][j + k - 1] - diag[i - 1][j - 1] - sumcol[i + k - 1][j - 1] + sumcol[i - 1][j - 1];
rasp = min(rasp, d[i][j]);
}
}
out<<sumtot - rasp<<'\n';
return player_unu;
}