Cod sursa(job #639061)
#include<fstream>
using namespace std;
int n,k,i,j,a[1001][1001],lin[1001][1001],col[1001][1001],diag[1001][1001],s,m;
int xi,yi,xf,yf,s1,s2,s3;
int main()
{
ifstream f("ferma2.in");
ofstream g("ferma2.out");
f>>n>>k;
for(i=1;i<=n;++i)
for(j=1;j<=i;++j)
{
f>>a[i][j];
col[i][j]=col[i-1][j]+a[i][j];
lin[i][j]=lin[i][j-1]+a[i][j];
diag[i][j]=diag[i-1][j-1]+a[i][j];
}
xi=yi=1;
xf=yf=n;
m=n-k;
s=0;
for(i=1;i<=k;++i)
{
s1=col[xf][yi]-col[xi-1][yi];
s2=lin[xf][yf]-lin[xf][yi-1];
s3=diag[xf][yf]-diag[xi-1][yi-1];
// g<<s1<<" "<<s2<<" "<<s3<<"\n";
if(s1>s2&&s1>s3)
{
s+=s1;
xi++;
yi++;
// g<<"s1 :"<<s1<<"\n";
}
else
if(s2>s3)
{
s+=s2;
xf--;
yf--;
// g<<"s2 "<<s2<<"\n";
}
else
{
s+=s3;
xi++;
yf--;
// g<<"s3 "<<s3<<"\n";
}
}
g<<s;
/* g<<"\n\n";
for(i=1;i<=n;++i)
{
for(j=1;j<=i;++j)
g<<col[i][j]<<" ";
g<<"\n";
}
*/
return 0;
}