Cod sursa(job #636568)
#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=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++)
for(jj=1;jj<=N-ii;jj++)
S+=A[N-ii][jj];
//S+=Sl[N-ii][N-ii];
for(jj=0;jj<j;jj++)
for(ii=1;ii<=N-i;ii++)
S+=A[ii][jj+1];
//S+=Sc[N-i][jj+1];
for(kk=0;kk<k;kk++)
for(ii=j+kk+1;ii<=N-i;ii++)
S+=A[ii][ii-kk];
//S=S+Sd[N-i][N-i-kk]-Sd[j+kk][j];
Smax=max(Smax,S);
}
fout << Smax;
}