Pagini recente » Cod sursa (job #1928944) | Cod sursa (job #167560) | Cod sursa (job #233189) | Cod sursa (job #2457583) | Cod sursa (job #2336981)
#include <bits/stdc++.h>
#define Dim 1005
using namespace std;
ifstream f("ferma2.in");
ofstream g("ferma2.out");
int N,K,V[Dim][Dim],Tr[Dim][Dim],A[Dim][Dim];
int cnt,p=1,sol,dist,ans;
struct info
{
int line,dg;
}S[Dim][Dim];
int main()
{
f>>N>>K;
for(int i=1;i<=N;i++)
for(int j=1;j<=i;j++)
{
f>>V[i][j];
sol+=V[i][j];
S[i][j].line=S[i][j-1].line+V[i][j];
S[i][j].dg=S[i-1][j-1].dg+V[i][j];
}
dist=N-K;
for(int i=1;i<=N;i++)
{
if(i>=dist) cnt++;
for(int j=i;j>=1;j--)
{
Tr[i][j]=Tr[i-1][j]+S[i][i].line-S[i][j-1].line;
if(i>=dist&&j==cnt)
{
A[i][cnt]=Tr[i][cnt];
ans=max(ans,sol-A[i][cnt]);
}
}
}
cnt=1;
for(int i=dist+1;i<=N;i++)
{
cnt++;
for(int j=1;j<cnt;j++)
{
A[i][j]=A[i-1][j]+S[i][j+dist-1].line-S[i][j-1].line-(S[i-1][j+dist-1].dg-S[i-dist-1][j-1].dg);
ans=max(ans,sol-A[i][j]);
}
}
g<<ans;
return 0;
}