Pagini recente » Cod sursa (job #1010153) | Cod sursa (job #455970) | Cod sursa (job #2740250) | Cod sursa (job #1230730) | Cod sursa (job #638113)
Cod sursa(job #638113)
#include<stdio.h>
#define Nmax 1009
int x2,y2,SUM,N,K,i,j,a[Nmax][Nmax],b[Nmax][Nmax],min=9999999;
int sum(int x,int y)
{
int i,j,S=0;
x2=x-1;
y2=y-1;
S=b[x2][y2];
for (i=1;i<=K;i++)
S-=a[i+x2-1][y2];
for (i=1;i<=K;i++)
S+=a[x+K-1][y2+i];
if (S<min) min=S;
return S;
}
int D(int x,int y)
{
int S,q=i-1,i;
S=b[x-1][y];
for (i=q;i<=q+K-1;i++)
S-=a[i][y+i-q];
for (i=1;i<=K;i++)
S+=a[x+K-1][y+i-1];
if (S<min) min=S;
return S;
}
int main()
{
freopen("ferma2.in","r",stdin);
freopen("ferma2.out","w",stdout);
scanf("%d%d",&N,&K);
K=N-K;
for (i=1;i<=N;i++)
for (j=1;j<=i;j++)
{
scanf("%d",&a[i][j]);
SUM+=a[i][j];
}
for (i=1;i<=K;i++)
for (j=1;j<=i;j++)
b[1][1]+=a[i][j];
for (i=2;i<=N-K+1;i++)
b[i][i]=sum(i,i);
for (j=1;j<=N-K+1;j++)
for (i=j+1;i<=N-K+1;i++)
b[i][j]=D(i,j);
printf("%d\n",SUM-min);
}