#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"; } } |
English