intmain() { int sum, n; cin >> sum >> n; for (int i = 0; i < n; ++i) cin >> arr[i]; sort(arr, arr + n); int s = 0, ans = 0, l = 0, r = n - 1; while (l < r) { // flag控制r独立分组的情况 s = arr[l]; int flag = false; while (l < r && s + arr[r] <= sum) { s += arr[r]; --r; flag = true; } flag == false ? --r : ++l; ++ans; } cout << (l == r ? ++ans : ans); return0; }
intmain() { int sum, n; cin >> sum >> n; for (int i = 0; i < n; ++i) cin >> arr[i]; sort(arr, arr + n); int ans = 0, l = 0, r = n - 1; while (l < r) { int mx = arr[r]; while (l < r && mx + arr[l] <= sum) mx += arr[l++]; --r; ++ans; } if (arr[l] <= sum) ++ans; cout << ans; return0; }