Cod sursa(job #636669)

Utilizator PlayLikeNeverB4George Marcus PlayLikeNeverB4 Data 19 noiembrie 2011 22:25:35
Problema Ferma2 Scor 80
Compilator cpp Status done
Runda .com 2011 Marime 0.91 kb
#include <fstream>
using namespace std;

#define NMAX 1024
ifstream fin("ferma2.in");
ofstream fout("ferma2.out");

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() {
	fin >> N >> K;
	for(i=1;i<=N;i++)
		for(j=1;j<=i;j++)
			fin >> 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];
	for(j=1;j<=N;j++)
		for(i=j;i<=N;i++)
			Sc[i][j]=Sc[i-1][j]+A[i][j];
	for(i=1;i<=N;i++)
		for(j=1;j<=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
			for(k=0;k<=K-i-j;k++) // k = diagonala
				if(i+j+k==K) {
					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);
				}
	fout << Smax;
}