#include using namespace std; int main() { int l, n, min, min_label, ans, sum; const static int MAX_INT = 2147483647; min = MAX_INT; ans = 0; sum = 0; cin >> l >> n; //各ブロックのサイズデータを格納するときに最小値を探す。 int w[n]; for (int i = 0; i < n; i++) { cin >> w[i]; if (min > w[i]) { min = w[i]; min_label = i; } } //見つけた最小値を取るブロックを最初に大きな箱に入れる。 sum += min; //大きな箱に入れたブロックは取り除く。 w[min_label] = MAX_INT; min = MAX_INT; //大きな箱がいっぱいになるまでこの操作を繰り返す。 while (l >= sum) { ans++; for (int i = 0; i < n; i++) { if (min > w[i]) { min = w[i]; min_label = i; } } if (min == MAX_INT) { break; } sum += min; w[min_label] = MAX_INT; min = MAX_INT; } cout << ans << endl; return 0; }