Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <stdio.h>#include <string.h>int n,m,q,w[1005];int num[1025];int d[2][1025];void init(){int cnt;for(int s=0;s<(1<<10);s++){cnt=0;for(int i=0;i<10;i++) if((s>>i)&1) cnt++;num[s]=cnt;}}int max(int a,int b){return a>b?a:b;}int main(){int ans=0;init();scanf("%d%d%d",&n,&m,&q);for(int i=0;i<n;i++) scanf("%d",w+i);if(m>n){for(int s=0;s<(1<<n);s++) if(num[s]<=q){int cnt=0;for(int j=0;j<n;j++) if((s>>j)&1) cnt+=w[j];ans=max(ans,cnt);}printf("%d\n",ans);return 0;}for(int s=0;s<(1<<m);s++)if(num[s]<=q){