#include #include using namespace std; int main() { int max; int n; cin >> max; cin >> n; // 入力されるブロックを小さい順に並べ替えながら、blocksに入れていく list blocks; for ( auto i = 0; i < n; i++ ) { int x; cin >> x; list::iterator it; for ( it = blocks.begin(); it != blocks.end() && *it < x; ++it ) { // itを取得したいだけなので何もしない } blocks.insert(it, x); } // maxを超えないブロック数を小さい順から数えればOKなはず int count = 0; int t = 0; for ( auto block : blocks ) { if ( t + block > max ) { break; } count++; t += block; } cout << count << endl; return 0; }