Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;#define rep(i,s,t) for(int i=s;i<t;i++)#define clr(a) memset(a,-1,sizeof a)int dp[2][1<<10],now;int all,n,m,q;int w[1005];inline int one(int st){int ret=0;while(st) ret++,st-=(st&(-st));return ret;}int main(){scanf("%d%d%d",&n,&m,&q);rep(i,0,n) scanf("%d",&w[i]);now=0;clr(dp[now]);all=(1<<m);dp[now][0]=0;rep(i,0,n){now^=1;clr(dp[now]);rep(j,0,all) if(dp[1^now][j]!=-1){int st=((j<<1));dp[now][st&(all-1)]=max(dp[now][st&(all-1)],dp[1^now][j]);st=((st|1)&(all-1));if(one(st)<=q){