Pagini recente » Cod sursa (job #1319119) | Cod sursa (job #2768217) | Cod sursa (job #335694) | Cod sursa (job #1930435) | Cod sursa (job #636813)
Cod sursa(job #636813)
#include<stdio.h>
#define MaxN 2100
int N,K,T,SUM,MIN = 238923232,A[MaxN][MaxN],B[MaxN][MaxN],oriz[MaxN][MaxN],diag[MaxN][MaxN];
void citire(void)
{
FILE *f = fopen("ferma2.in","r");
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]);
SUM += A[i][j];
}
fclose(f);
}
void Bb(void)
{
T = N-K;
for(int i=N;i;i--)
for(int j=1;j<=i;j++)
{
oriz[i][j] = A[i][j] + oriz[i][j-1];
diag[i][j] = A[i][j] + diag[i+1][j+1];
B[i][j] = B[i+1][j] - (oriz[i+T][j+T-1] - oriz[i+T][j-1]) + (diag[i][j]-diag[i+T][j+T]);
}
}
int Min(void)
{
for(int i=1;i<=N-T+1;i++)
for(int j=1;j<=i;j++)
if(MIN > B[i][j])
MIN = B[i][j];
}
int main()
{
FILE *g = fopen("ferma2.out","w");
citire();
Bb();
Min();
fprintf(g,"%d ",SUM-MIN);
fclose(g);
return 0;
}