# [0,n]二分搜 https://open.kattis.com/problems/licenserenewal ```c++ #include <bits/stdc++.h> using namespace std; #pragma GCC optimize("O2", "O3", "Ofast", "unroll-loops") #define fs first #define sc second #define pb push_back #define ll long long #define int ll #define FOR(i, a, b) for (ll i = (a); i < (b); i++) #define REF(i, a, b) for (ll i = (a); i >= (b); i--) #define pii pair<int, int> int n, s1, s2, t, s, sum = 0; int n1 = 0, n2 = 0; vector<int> v; signed main() { cin >> n >> s1 >> s2; FOR(i, 0, n) { cin >> t; v.pb(t); } int lo = 0, hi = n, mid = (lo + hi) / 2; while (lo <= hi) { //cout << lo << " " << hi << endl; int t1 = s1, t2 = s2; mid = (lo + hi) / 2; vector<int> tmp; FOR(i, 0, mid) { tmp.pb(v[i]); } sort(tmp.begin(), tmp.end(), greater<int>()); for (auto i : tmp) { if (i > t1) t2 -= i; else t1 -= i; } //cout << tmp.size() << " " << t1 << " " << t2 << endl; if (t1 >= 0 && t2 >= 0) { lo = mid + 1; } else hi = mid - 1; } cout << lo - 1 << endl; return 0; }