#include <bits/stdc++.h> using namespace std; multiset <long long> jezioro; vector <long long> naSet; long long zap1() { long long a,b; cin>>a>>b; if(a==b || a>b) return 0; long long wyn=0; auto k=upper_bound(jezioro.begin(), jezioro.end(), -a); while(k!=jezioro.end() && a<b) { a-=*k; ++wyn; naSet.push_back(*k); jezioro.erase(jezioro.find(*k)); k=upper_bound(jezioro.begin(), jezioro.end(), -a); } for(long long i=naSet.size()-1; i>=0; --i) { jezioro.insert(naSet[i]); naSet.pop_back(); } //if(k==jezioro.end() && a<b) // return -1; //cout<<a<<" "<<b<<endl; if(a<b) return -1; return wyn; } void zap2() { long long a; cin>>a; jezioro.insert(-a); } void zap3() { long long a; cin>>a; jezioro.erase(-a); } int main() { int ryby; cin>>ryby; for(int i=0; i<ryby; ++i) { long long a; cin>>a; jezioro.insert(-a); } int q; cin>>q; for(int i=0; i<q; ++i) { int a; cin>>a; if(a==1) cout<< zap1()<<endl; else if(a==2) zap2(); else zap3(); } }
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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | #include <bits/stdc++.h> using namespace std; multiset <long long> jezioro; vector <long long> naSet; long long zap1() { long long a,b; cin>>a>>b; if(a==b || a>b) return 0; long long wyn=0; auto k=upper_bound(jezioro.begin(), jezioro.end(), -a); while(k!=jezioro.end() && a<b) { a-=*k; ++wyn; naSet.push_back(*k); jezioro.erase(jezioro.find(*k)); k=upper_bound(jezioro.begin(), jezioro.end(), -a); } for(long long i=naSet.size()-1; i>=0; --i) { jezioro.insert(naSet[i]); naSet.pop_back(); } //if(k==jezioro.end() && a<b) // return -1; //cout<<a<<" "<<b<<endl; if(a<b) return -1; return wyn; } void zap2() { long long a; cin>>a; jezioro.insert(-a); } void zap3() { long long a; cin>>a; jezioro.erase(-a); } int main() { int ryby; cin>>ryby; for(int i=0; i<ryby; ++i) { long long a; cin>>a; jezioro.insert(-a); } int q; cin>>q; for(int i=0; i<q; ++i) { int a; cin>>a; if(a==1) cout<< zap1()<<endl; else if(a==2) zap2(); else zap3(); } } |