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
#include <bits/stdc++.h>
using namespace std;

int main(){
    int n;
    cin>>n;
    vector <int> v;
    for(int i=0;i<n;i++){
        int x;
        cin>>x;
        v.push_back(x);
    }
    sort(v.begin(),v.end());
    int k;
    cin>>k;
    for(int i=0;i<k;i++){
        int w;
        cin>>w;
        if(w==1){
            int mamy,chcemy;
            cin >> mamy>> chcemy;
            vector <int> k =v;
            int z=0;
            while(mamy<chcemy&&k[0]<mamy&&k.size()>0){
                int a=0;
                int b=k.size();
                while(a<b){
                    int mid=a+(b-a)/2;
                    if(k[mid]<mamy){
                        a=mid+1;
                    }else{
                        b=mid;
                    }
                }
                mamy+=k[a-1];
                k.erase(k.begin()+a-1);
                z++;
            }
            if(mamy>=chcemy){
                cout<<z<<"\n";
            }else{
                cout<<-1<<"\n";
                //cout << k[a];
            }
        }else if(w==2){
            int h;
            cin>>h;
            v.push_back(h);
            sort(v.begin(),v.end());
        }else if(w==3){
            int h;
            cin>>h;
            int a=0;
            int b=v.size();
            while(a<b){
                int mid=a+(b-a)/2;
                if(v[mid]<h){
                    a=mid+1;
                }else{
                    b=mid;
                }
            }
            v.erase(v.begin()+a);
        }
    }
}