#include <bits/stdc++.h> using namespace std; int n, q, opr, pom, najwmr; long long waga[300100], sumamas, s, k; int kol[300100], poz; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin>>n; for (int i=0; i<n; i++) { cin>>waga[i]; sumamas+=waga[i]; } sort (waga, waga+n); cin>>q; for (int i=0; i<q; i++) { cin>>opr; if (opr==1) { poz=0; int zr=0; cin>>s>>k; if (k-s>sumamas) cout<<-1<<"\n"; else if (s>=k) cout<<0<<"\n"; else { najwmr=n-1; for (int j=0; j<n; j++) { if (s<=waga[j]) { najwmr=j-1; break; } kol[poz++]=j; } if (najwmr==-1) cout<<-1<<endl; else { //cout<<s<<" "<<najwmr<<" "<<pop<<endl; s+=waga[najwmr]; poz--; zr++; while (s<k) { for (int j=najwmr+1; j<n; j++) { if (s<=waga[j]) { najwmr=j-1; break; } kol[poz++]=j; } //cout<<s<<" "<<najwmr<<" "<<pop<<endl; if (poz>0) { s+=waga[kol[poz-1]]; poz--; } else { zr=-1; break; } zr++; } cout<<zr<<"\n"; } } } if (opr==2) { cin>>pom; sumamas+=pom; if (pom>waga[n-1]) waga[n]=pom; else for (int j=0; j<n; j++) { if (waga[j]>=pom) { for (int k=n-1; k>=j; k--) waga[k+1]=waga[k]; waga[j]=pom; break; } } n++; } if (opr==3) { cin>>pom; sumamas-=pom; for (int j=0; j<n; j++) { if (waga[j]==pom) { for (int k=j; k<n-1; k++) waga[k]=waga[k+1]; break; } } n--; } } // for (int i=0; i<n; i++) // cout<<waga[i]<<" "; return 0; }
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 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | #include <bits/stdc++.h> using namespace std; int n, q, opr, pom, najwmr; long long waga[300100], sumamas, s, k; int kol[300100], poz; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin>>n; for (int i=0; i<n; i++) { cin>>waga[i]; sumamas+=waga[i]; } sort (waga, waga+n); cin>>q; for (int i=0; i<q; i++) { cin>>opr; if (opr==1) { poz=0; int zr=0; cin>>s>>k; if (k-s>sumamas) cout<<-1<<"\n"; else if (s>=k) cout<<0<<"\n"; else { najwmr=n-1; for (int j=0; j<n; j++) { if (s<=waga[j]) { najwmr=j-1; break; } kol[poz++]=j; } if (najwmr==-1) cout<<-1<<endl; else { //cout<<s<<" "<<najwmr<<" "<<pop<<endl; s+=waga[najwmr]; poz--; zr++; while (s<k) { for (int j=najwmr+1; j<n; j++) { if (s<=waga[j]) { najwmr=j-1; break; } kol[poz++]=j; } //cout<<s<<" "<<najwmr<<" "<<pop<<endl; if (poz>0) { s+=waga[kol[poz-1]]; poz--; } else { zr=-1; break; } zr++; } cout<<zr<<"\n"; } } } if (opr==2) { cin>>pom; sumamas+=pom; if (pom>waga[n-1]) waga[n]=pom; else for (int j=0; j<n; j++) { if (waga[j]>=pom) { for (int k=n-1; k>=j; k--) waga[k+1]=waga[k]; waga[j]=pom; break; } } n++; } if (opr==3) { cin>>pom; sumamas-=pom; for (int j=0; j<n; j++) { if (waga[j]==pom) { for (int k=j; k<n-1; k++) waga[k]=waga[k+1]; break; } } n--; } } // for (int i=0; i<n; i++) // cout<<waga[i]<<" "; return 0; } |