Pagini recente » Cod sursa (job #2345818) | Cod sursa (job #921552) | Cod sursa (job #1650676) | Cod sursa (job #2614718) | Cod sursa (job #636262)
Cod sursa(job #636262)
#include<fstream>
using namespace std;
ifstream f("ferma2.in");
ofstream g("ferma2.out");
int n,s,k;
int a[1010][1010],sol[1010][1010],lin[1010][1010],col[1010][1010],diag[1010][1010];
int main()
{
f>>n>>k;
for(int i=1;i<=n;++i)
for(int j=1;j<=i;++j)
{
f>>a[i][j],s+=a[i][j];
lin[i][j]=lin[i][j-1]+a[i][j];
col[i][j]=col[i-1][j]+a[i][j];
diag[i][j]=diag[i-1][j-1]+a[i][j];
}
k=n-k;
for(int i=1;i<=k;++i)
for(int j=1;j<=i;++j)
sol[1][1]+=a[i][j];
int sss=sol[1][1];
for(int i=2;i<=n-k+1;++i)
{
sol[i][1]=sol[i-1][1]-diag[i+k-2][k]+lin[i+k-1][k];
if(sss>sol[i][1]) sss=sol[i][1];
for(int j=2;j<=i;++j)
{
sol[i][j]=sol[i][j-1]+diag[i+k-1][j+k-1]-diag[i-1][j-1]-(col[i+k-1][j-1]-col[i-1][j-1]);
if(sss>sol[i][j]) sss=sol[i][j];
}
}
g<<s-sss;
g.close();
return 0;
}