Pagini recente » Cod sursa (job #966028) | Cod sursa (job #1001459) | Cod sursa (job #1747891) | Cod sursa (job #2149455) | Cod sursa (job #1058805)
#include<stdio.h>
FILE*f = fopen("ferma2.in", "r");
FILE*g = fopen("ferma2.out", "w");
int j, sol, n, k, sum, min, a[1001][1001], b[1001][1001], c[1001][1001], d[1001][1001], v[1001][1001];
int main(){
fscanf(f, "%d%d", &n, &k);
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= i; ++j){
fscanf(f, "%d", &a[i][j]);
b[i][j] = b[i - 1][j] + a[i][j];
c[i][j] = c[i][j - 1] + a[i][j];
d[i][j] = d[i - 1][j - 1] + a[i][j];
sum += a[i][j];
}
int m = n - k;
for (int i = 1; i <= m; ++i)
for (int j = 1; j <= i; ++j)
sol += a[i][j];
min = v[m][m] = sol;
for (int i = m + 1; i <= n; ++i){
for (j = m; j<i; ++j){
v[i][j] = v[i - 1][j] + c[i][j + 1] - c[i][j - m] - d[i][j + 1] + d[i - m - 1][j - m];
if (v[i][j]<min)
min = v[i][j];
}
v[i][j] = v[i][j - 1] + d[i][j] - d[i - m - 1][j - m - 1] - b[i][j - m];
if (v[i][j]<min)
min = v[i][j];
}
fprintf(g, "%d", sum - min);
fclose(g);
fclose(f);
return 0;
}