Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>using namespace std;int dp[1001][1025];int w[1001];int countDigit( int s){int digit = 0;while( s){if( s&1) digit++;s >>= 1;}return digit;}int main(){int N, M, Q;cin >> N >> M >> Q;for( int i = 1; i <= N; i++)cin >> w[i];for( int i = 1; i <= N; i++)for( int s = 0; s < (1<<M-1); s++){if( countDigit(s) > Q) { dp[i][s] = 0; continue;}if( countDigit(s) < Q)dp[i][s] = max( dp[i-1][s/2], dp[i-1][s/2+(1<<(M-2))]);