#include <string> #include <cstring> #include <cstdio> #include <iostream> #include <malloc.h> #include <vector> using namespace std; const int maxn = 25; int main() { //for(int i = 0; i < 12; ++i) cout << str[i] << endl; int n, m, t; int wp[maxn]; int cap[maxn]; int res; while(cin >> n >> t >> m){ res = 0; for(int i = 0; i < n; ++i) cin >> wp[i]; for(int idx = 0; idx < (1 << n); ++idx){ int bit = idx; int ans = 0; int curbag = 0; for(int i = 0; i < m; ++i) cap[i] = t; for(int i = 0; i < n; ++i){ if(bit & 1){ if(cap[curbag] >= wp[i]) { cap[curbag] -= wp[i]; ans++; } else { // cap不够用新包 ++curbag; if(curbag >= m) break; else { if(t >= wp[i]){ //空背包放得下 cap[curbag] -= wp[i]; ans++; } } } } bit >>= 1; } res = max(ans, res); //cout << idx << " " << ans << endl; } cout << res << endl; } return 0; }