#include <bits/stdc++.h> using namespace std; int main(){ int n, q, b; unsigned long long a, w, s, k, o=0; vector<unsigned long long> szprotki; scanf("%d", &n); for(int i = 0; i<n; ++i){ scanf("%llu", &a); szprotki.push_back(a); o+=a; } sort(szprotki.begin(), szprotki.end()); scanf("%d", &q); for(int i = 0; i<q; ++i){ scanf("%d", &b); if(b==1){ scanf("%llu%llu", &s, &k); vector<unsigned long long> tymszprotki (szprotki); unsigned long long p, zw=0, ss=s, kk=k; bool cw = false; if(ss==kk){ printf("%d\n", 0); }else{ while(true){ if(tymszprotki[0]>=s || o<(k-s)){ cw=true; break; } for(unsigned long long j = 0; j<tymszprotki.size(); ++j){ if(tymszprotki[j]<s){ p=tymszprotki[j]; } else{ tymszprotki.erase(tymszprotki.begin() + (j-1)); break; } //cout << s << " " << tymszprotki[0] << '\n'; } s+=p; zw++; if(s>=k){ printf("%llu\n", zw); cw = false; break; } }} if(cw==true){ cout << -1 << '\n'; } }else if(b==2){ scanf("%llu", &w); szprotki.push_back(w); sort(szprotki.begin(), szprotki.end()); }else{ scanf("%llu", &w); for(unsigned long long k = 0; k<szprotki.size(); ++k){ if(szprotki[k]==w){ szprotki.erase(szprotki.begin() + k); } } } } }
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 82 83 | #include <bits/stdc++.h> using namespace std; int main(){ int n, q, b; unsigned long long a, w, s, k, o=0; vector<unsigned long long> szprotki; scanf("%d", &n); for(int i = 0; i<n; ++i){ scanf("%llu", &a); szprotki.push_back(a); o+=a; } sort(szprotki.begin(), szprotki.end()); scanf("%d", &q); for(int i = 0; i<q; ++i){ scanf("%d", &b); if(b==1){ scanf("%llu%llu", &s, &k); vector<unsigned long long> tymszprotki (szprotki); unsigned long long p, zw=0, ss=s, kk=k; bool cw = false; if(ss==kk){ printf("%d\n", 0); }else{ while(true){ if(tymszprotki[0]>=s || o<(k-s)){ cw=true; break; } for(unsigned long long j = 0; j<tymszprotki.size(); ++j){ if(tymszprotki[j]<s){ p=tymszprotki[j]; } else{ tymszprotki.erase(tymszprotki.begin() + (j-1)); break; } //cout << s << " " << tymszprotki[0] << '\n'; } s+=p; zw++; if(s>=k){ printf("%llu\n", zw); cw = false; break; } }} if(cw==true){ cout << -1 << '\n'; } }else if(b==2){ scanf("%llu", &w); szprotki.push_back(w); sort(szprotki.begin(), szprotki.end()); }else{ scanf("%llu", &w); for(unsigned long long k = 0; k<szprotki.size(); ++k){ if(szprotki[k]==w){ szprotki.erase(szprotki.begin() + k); } } } } } |