#include <cstdio>#include <iostream>#include <algorithm>#include <queue>#include <stack>#include <climits>#include <cstring>#include <cmath>#include <map>#include <set>#define INF 100000000using namespace STD;intN,m,q;intdp[1050][1100];intnum[1100];inta[1050];intFinti) {intAns =0; while(i) {ans + = i&1;//cout << "A" << i << Endl; //cout << (i^0) << Endl;I >>=1; }returnAns;}voidFun () { for(inti =0; I <= (1<<Ten) (i++) {Num[i] = f (i); }}intMain () {fun (); while(Cin>> n >> m >> q) { for(inti =0; i < n;i++) {scanf("%d", &a[i]); }memset(dp[0],0,sizeof(dp[0])); for(inti =0; i < n;i++) { for(ints =0; S < (1<< m); s++) {if(Num[s] <= q) {if(s&1) {dp[i+1][s] = A[i]; dp[i+1][s] + = max (dp[i][(s>>1)^(1<< (M-1))],dp[i][(s>>1)]); }Else{if(Num[s] = = q) {dp[i+1][s] = dp[i][s>>1]; }Else{dp[i+1][s] = max (dp[i][(s>>1)^(1<< (M-1))],dp[i][(s>>1)]); } } }Else{Dp[i][s] =0; } } }intMax =0; for(inti =0; I < (1<<M); i++) {if(Num[i] <= q && dp[n][i] > Max) {max = dp[n][i]; } }printf("%d\n", Max); }return 0;}
Welcome to the Csdn-markdown Editor