#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int W[1001],F[1<<10][1002],N,M,Q,ans;
int main() {
scanf("%d%d%d",&N,&M,&Q);
for(int i=1; i<=N; i++)scanf("%d",&W[i]);
for(int i=1; i<=N; i++)
for(int S=0; S<1<<M; S++) {
int mov=(S&~(1<<M-1))<<1,l=mov,count=0;
while(l)count++,l-=l&-l;
F[mov][i+1]=max(F[mov][i+1],F[S][i]);
if(count<Q)F[mov|1][i+1]=max(F[mov|1][i+1],F[S][i]+W[i]);
}
for(int S=0; S<1<<M; S++)ans=max(ans,F[S][N+1]);
printf("%d",ans);
return 0;
}
hihocoder1044
最新推荐文章于 2017-07-18 11:02:14 发布