Cod sursa(job #636704)

Utilizator PlayLikeNeverB4George Marcus PlayLikeNeverB4 Data 19 noiembrie 2011 22:40:13
Problema Ferma2 Scor 80
Compilator cpp Status done
Runda .com 2011 Marime 0.85 kb
#include <cstdio>
#include <algorithm>
using namespace std;

#define NMAX 1024

int N,K,i,j,k,ii,jj,kk,S,Smax;
int Sl[NMAX][NMAX],Sc[NMAX][NMAX],Sd[NMAX][NMAX];
int A[NMAX][NMAX];

int main() {
	freopen("ferma2.in","r",stdin);
	freopen("ferma2.out","w",stdout);
	
	scanf("%d %d",&N,&K);
	for(i=1;i<=N;++i)
		for(j=1;j<=i;++j)
			scanf("%d",&A[i][j]);
	
	for(i=1;i<=N;++i)
		for(j=1;j<=i;++j) {
			Sl[i][j]=Sl[i][j-1]+A[i][j];
			Sc[i][j]=Sc[i-1][j]+A[i][j];
			Sd[i][j]=Sd[i-1][j-1]+A[i][j];
		}
	
	for(i=0;i<=K;++i)             // i = linia
		for(j=0;j<=K-i;++j) {     // j = coloana
			k=K-i-j;  			  // k = diagonala
			S=0;
			for(ii=0;ii<i;++ii)
				S+=Sl[N-ii][N-ii];
			for(jj=0;jj<j;++jj)
				S+=Sc[N-i][jj+1];
			for(kk=0;kk<k;++kk)
				S=S+Sd[N-i][N-i-kk]-Sd[j+kk][j];
			Smax=max(Smax,S);
		}
	printf("%d",Smax);
}