#include<iostream>
#define nxt(i) (((i)==n)?1:((i)+1))
#define lst(i) (((i)==1)?n:((i)-1))
using namespace std;
int n,b;
int a[3835];
int dp[3833][3833][3833][2],maxx;//dp[i][j][k][l]:在从i开始,到j结束的区间考虑完后,还需要睡k段,此时(l==1?是:否)上次在睡觉的结果
int main()
{
cin>>n>>b;
for(int i=1;i<=n;i++)
scanf("%d",a+i);
for(int i=1;i<=n;i++)
for(int j=i;j!=lst(i);j=nxt(j))
for(int k=b;k>=0;k--)
{
dp[i][j][k][1]=max(dp[i][lst(j)][k+1][0],dp[i][lst(j)][k+1][1]+a[j]);
dp[i][j][k][0]=max(dp[i][lst(j)][k][0],dp[i][lst(j)][k][1]);
}
for(int i=1;i<=n;i++)
maxx=max(maxx,max(dp[i][lst(i)][0][0],dp[i][lst(i)][0][1]));
cout<<maxx;
return 0;
}
No valid executable file was produced by the compiler
./cc0ETaZE.o: in function `__static_initialization_and_destruction_0(int, int)':
src:(.text+0x3b8): relocation truncated to fit: R_X86_64_PC32 against `.bss'
src:(.text+0x3d1): relocation truncated to fit: R_X86_64_PC32 against `.bss'
collect2: 错误:ld 返回 1
竟敢搞鬼