Pagini recente » Cod sursa (job #1427457) | Cod sursa (job #2986385) | Cod sursa (job #1501254) | Cod sursa (job #471747) | Cod sursa (job #1845051)
#include <iostream>
#include <cstdio>
#define inf 100000005
using namespace std;
int v[1005];
int trg[1005];
int d[1005];
int c[1005];
int m[1005][1005];
int main()
{
freopen("ferma2.in","r",stdin);
freopen("ferma2.out","w",stdout);
int i,j,k,n,s=0,x,suml,mini,t;
scanf("%d%d",&n,&k);
k=n-k;
for(i=1;i<=k;i++)
{
for(j=1;j<=i;j++)
{
scanf("%d",&x);
s+=x;
m[i][j]=x;
d[i-j+1]+=x;
c[j]+=x;
trg[1]+=x;
}
}
mini=trg[1];
for(i=k+1;i<=n;i++)
{
for(j=1;j<=i;j++)
{
scanf("%d",&v[j]);
m[i][j]=v[j];
s+=v[j];
}
suml=0;
for(j=i;j>=i-k+2;j--)
suml+=v[j];
t=d[i-k];
for(j=i-k+1;j>=2;j--)
{
suml=suml+v[j]-m[i][j+k];
trg[j]=trg[j-1]-c[j-1]+suml;
mini=min(mini,trg[j]);
if(i-j+1)
d[i-j+1]+=v[j];
c[j]=c[j]-m[i-k][j]+v[j];
}
suml=suml+v[1]-m[i][1+k];
trg[1]=trg[1]+suml-t;
mini=min(mini,trg[1]);
d[i]+=v[1];
c[1]=c[1]+v[1]-m[i-k][1];
}
printf("%d",s-mini);
return 0;
}