Pagini recente » Cod sursa (job #742690) | Cod sursa (job #2060302) | Cod sursa (job #1630339) | Cod sursa (job #2684223) | Cod sursa (job #2756626)
#include <bits/stdc++.h>
using namespace std;
struct ura
{
int l; // linie
int c; // coloana
int d; // diagonala
};
ura dp[1001][1001];
int main()
{
ifstream cin("ferma2.in");
ofstream cout("ferma2.out");
int n,k;
long long sum=0;
cin>>n>>k;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
/*
if(j<=i)
cin>>ma[i][j];
else
ma[i][j]=0;
*/
int nr;
cin>>nr;
sum+=nr;
dp[i][j].l=dp[i][j-1].l+nr;
dp[i][j].c=dp[i-1][j].c+nr;
dp[i][j].d=dp[i-1][j-1].d+nr;
}
}
long long sumi=0;
k=n-k;
for(int i=1;i<=k;i++)
{
sumi+=dp[i][i].l;
}
long long minim;
minim=sumi;
for(int i=2;i<=n-k+1;i++)
{
sumi+=dp[i+k-1][k].l;
sumi-=dp[i+k-2][k].d;
minim=min(minim,sumi);
int sump=sumi;
for(int j=2;j<=i;j++)
{
sump=sump+dp[i+k-1][j+k-1].d-dp[i-1][j-1].d;
sump=sump-dp[i+k-1][j-1].c+dp[i-1][j-1].c;
minim=min(minim,sump*1LL);
}
}
cout<<sum-minim;
}