#include <bits/stdc++.h> using namespace std; bool tab1[400000]; int main(){ ios_base::sync_with_stdio(0); int n,k,a,z=0,l=0; cin>>n; long long tab[400000]; for(int i=0;i<n;i++){ cin>>tab[i]; tab1[i]=1; } sort(tab,tab+n); long long w, s; for(cin>>k;k;k--){ cin>>a; if(a==1){ cin>>w>>s; if(w==s){ cout<<0<<endl; } else{ int f=0; while(w<s && l<n){ int f=0; while(tab[f]<w){ f++; } f--; if(tab1[f]==1){ w=w+tab[f]; tab1[f]=0; z++; } else{ f--; while(tab1[f]==0){ f--; if(f<0){ break; } } if(w>tab[f]){ w=w+tab[f]; tab1[f]=0; z++;} } l++; } if(w>=s){ cout<<z<<endl; } else if(w<s){ cout<<-1<<endl; } l=0; z=0; for(int i=0;i<n;i++){ tab1[i]=1; }} } else if(a==2){ cin>>w; int f=0; while(tab[f]<w){ f++; } tab[n]=w; tab1[n]=1; for(int i=n;i>f;i--){ swap(tab[i],tab[i-1]); } n++; } else{ cin>>w; int f=0; while(tab[f]!=w){ f++; } tab[f]=0; for(int i=f;i<n;i++){ swap(tab[i],tab[i+1]); } 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 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 | #include <bits/stdc++.h> using namespace std; bool tab1[400000]; int main(){ ios_base::sync_with_stdio(0); int n,k,a,z=0,l=0; cin>>n; long long tab[400000]; for(int i=0;i<n;i++){ cin>>tab[i]; tab1[i]=1; } sort(tab,tab+n); long long w, s; for(cin>>k;k;k--){ cin>>a; if(a==1){ cin>>w>>s; if(w==s){ cout<<0<<endl; } else{ int f=0; while(w<s && l<n){ int f=0; while(tab[f]<w){ f++; } f--; if(tab1[f]==1){ w=w+tab[f]; tab1[f]=0; z++; } else{ f--; while(tab1[f]==0){ f--; if(f<0){ break; } } if(w>tab[f]){ w=w+tab[f]; tab1[f]=0; z++;} } l++; } if(w>=s){ cout<<z<<endl; } else if(w<s){ cout<<-1<<endl; } l=0; z=0; for(int i=0;i<n;i++){ tab1[i]=1; }} } else if(a==2){ cin>>w; int f=0; while(tab[f]<w){ f++; } tab[n]=w; tab1[n]=1; for(int i=n;i>f;i--){ swap(tab[i],tab[i-1]); } n++; } else{ cin>>w; int f=0; while(tab[f]!=w){ f++; } tab[f]=0; for(int i=f;i<n;i++){ swap(tab[i],tab[i+1]); } n--; } } } |