rt,代码:
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
#define int long long
#define N 105
using namespace std;
int n,k,arr[N][N],dp[N][N][2],ans;
int dfs(int i,int j,int mark,int sum){
if(i==n+1) return sum;
if(dp[i][j][mark]!=-1) return dp[i][j][mark];
for(int m=0;m<=1;m++){
if(mark<k){
dp[i][j][mark]=max(dp[i][j][mark],dfs(i+1,j+m,mark+1,sum+3*arr[i][j]));
}
dp[i][j][mark]=max(dp[i][j][mark],dfs(i+1,j+m,mark,sum+arr[i][j]));
}
return dp[i][j][mark];
}
signed main(){
memset(dp,-1,sizeof(dp));
cin>>n>>k;
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++) cin>>arr[i][j];
}
cout<<dfs(1,1,0,0);
return 0;
}