#include <bits/stdc++.h> using namespace std; multiset <long long> s; int main(){ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int n; cin >> n; for (int i = 1; i <= n; ++i){ long long x; cin >> x; s.insert(-x); } int q; cin >> q; for (int i = 1; i <= q; ++i){ int type; cin >> type; if (type == 1){ vector <long long> v; long long w, k; cin >> w >> k; int licznik = 0; //cout << w << ", " << k << ": "; while (w < k){ auto it = s.lower_bound(-(w-1)); if (it == s.end()){ licznik = -1; break; } w += -(*it); //cout << -(*it) << " "; licznik++; v.push_back(*it); s.erase(it); } cout << licznik << "\n"; for (auto u: v) s.insert(u); v.clear(); } if (type == 2){ long long w; cin >> w; s.insert(-w); } if (type == 3){ long long w; cin >> w; auto it = s.lower_bound(-w); s.erase(it); } //for (auto u: s) // cout << u << " "; //cout << "\n"; } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | #include <bits/stdc++.h> using namespace std; multiset <long long> s; int main(){ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int n; cin >> n; for (int i = 1; i <= n; ++i){ long long x; cin >> x; s.insert(-x); } int q; cin >> q; for (int i = 1; i <= q; ++i){ int type; cin >> type; if (type == 1){ vector <long long> v; long long w, k; cin >> w >> k; int licznik = 0; //cout << w << ", " << k << ": "; while (w < k){ auto it = s.lower_bound(-(w-1)); if (it == s.end()){ licznik = -1; break; } w += -(*it); //cout << -(*it) << " "; licznik++; v.push_back(*it); s.erase(it); } cout << licznik << "\n"; for (auto u: v) s.insert(u); v.clear(); } if (type == 2){ long long w; cin >> w; s.insert(-w); } if (type == 3){ long long w; cin >> w; auto it = s.lower_bound(-w); s.erase(it); } //for (auto u: s) // cout << u << " "; //cout << "\n"; } } |