Pagini recente » Cod sursa (job #2221078) | Cod sursa (job #524295) | Cod sursa (job #1958832) | Cod sursa (job #190306) | Cod sursa (job #1745329)
#include <fstream>
using namespace std;
ifstream cin("ferma2.in");
ofstream cout("ferma2.out");
const int INF = 1000000000;
const int MAXN = 1000;
int leftSum[1 + MAXN][1 + MAXN], downSum[1 + MAXN][1 + MAXN], diagonalSum[1 + MAXN][1 + MAXN];
int main() {
int n, k, sum = 0, best = INF;
cin >> n >> k;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= i; j++) {
int x;
cin >> x;
sum += x;
leftSum[i][j] = leftSum[i][j - 1] + x;
downSum[i][j] = downSum[i - 1][j] + leftSum[i][j];
diagonalSum[i][j] = diagonalSum[i - 1][j - 1] + leftSum[i][j];
}
k = n - k;
for (int i = k; i <= n; i++)
for (int j = k; j <= i; j++)
best = min(best, diagonalSum[i][j] - downSum[i][j - k] + downSum[i - k][j - k] - diagonalSum[i - k][j - k]);
cout << sum - best;
return 0;
}