Pagini recente » Cod sursa (job #1650461) | Istoria paginii runda/simulare_oji_2023_clasa_9/clasament | Cod sursa (job #2821856) | Cod sursa (job #1639141) | Cod sursa (job #696563)
Cod sursa(job #696563)
#include <cstdio>
#include <iostream>
using namespace std;
int tr[104][105];
int dp[104][105];
int main()
{
int n,k,S=0,Smin=1<<30;
freopen("ferma2.in","r", stdin);
freopen("ferma2.out","w", stdin);
scanf("%d %d",&n,&k);
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)
{
scanf("%d",&tr[i][j]);
S+=tr[i][j];
}
/*for(int i=1;i<=n;i++,cout<<endl)
for(int j=1;j<=i;j++)
cout<<tr[i][j]<<" ";*/
// sume partiale
for(int i=1;i<=n;i++)
{
int c=i;
int l=1;
dp[l][c]=tr[l][c];
while(l<=n && c<=n)
{
l++;
c++;
dp[l][c]+=dp[l-1][c-1]+tr[l][c];
}
c=1;
l=i;
if(dp[l][c]==0) // sa nu merg de 2 ori pe diag principala
{
dp[l][c]=tr[l][c];
while(l<=n && c<=n)
{
l++;
c++;
dp[l][c]+=dp[l-1][c-1]+tr[l][c];
}
}
}
/*for(int i=1;i<=n;i++,cout<<endl)
for(int j=1;j<=i;j++)
cout<<dp[i][j]<<" ";
cout<<S<<endl;*/
// caut triunghi de latura n-k
for(int i=n-k-1;i<=n;i++)
for(int j=1;j+n-k-1<=i;j++)
{
int Str=0,ind=1;
for(int c=j;c<j+n-k;c++)
{
Str+=dp[i][c]-dp[i-ind][j-1];
//cout<<" : "<<dp[i][c]<<" - : "<<dp[i-ind][j-1]<<" : ind :"<<ind<<endl;
ind++;
}
Smin=min(Str,Smin);
}
cout<<S-Smin;
return 0;
}