Cod sursa(job #638074)

Utilizator Eugen01Vasilescu Eugen Eugen01 Data 20 noiembrie 2011 18:41:27
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);
}