Cod sursa(job #638123)

Utilizator Eugen01Vasilescu Eugen Eugen01 Data 20 noiembrie 2011 19:00:39
Problema Ferma2 Scor 80
Compilator cpp Status done
Runda .com 2011 Marime 0.8 kb
#include<stdio.h>
#define Nmax 1009

int SUM,N,K,i,j,a[Nmax][Nmax],b[Nmax][Nmax],min=9999999;

int sum(int x,int y)
{
	int i,j,S=0;
	
	for (i=x;i<x+K;++i)
		for (j=y;j<y+i;++j)
			S+=a[i][j];
		
	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<=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);
}