#include <bits/stdc++.h> #define QCK ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); #define debug(x) cerr<<#x<<" "<<x<<endl #define LL unsigned long long using namespace std; int n,q, op, res; LL w, l, r, s, k, y; multiset <LL> S, SS; int main(){ QCK; cin>>n; while(n--){ cin>>w; S.insert(w); } cin>>q; while(q--){ cin>>op; if(op==1){ cin>>s>>k; res=0; while(s<k){ auto it = lower_bound(S.begin(),S.end(), s); //debug(*it); if(it==S.begin()){ res=-1; break; } else{ res++; it--; y=*it; s+=y; SS.insert(y); S.erase(it); } } for(auto it : SS) S.insert(it); SS.clear(); cout<<res<<endl; } else{ cin>>w; if (op==2) S.insert(w); else S.erase(w); } } }
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 | #include <bits/stdc++.h> #define QCK ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); #define debug(x) cerr<<#x<<" "<<x<<endl #define LL unsigned long long using namespace std; int n,q, op, res; LL w, l, r, s, k, y; multiset <LL> S, SS; int main(){ QCK; cin>>n; while(n--){ cin>>w; S.insert(w); } cin>>q; while(q--){ cin>>op; if(op==1){ cin>>s>>k; res=0; while(s<k){ auto it = lower_bound(S.begin(),S.end(), s); //debug(*it); if(it==S.begin()){ res=-1; break; } else{ res++; it--; y=*it; s+=y; SS.insert(y); S.erase(it); } } for(auto it : SS) S.insert(it); SS.clear(); cout<<res<<endl; } else{ cin>>w; if (op==2) S.insert(w); else S.erase(w); } } } |