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

using namespace std;

int n, q, w;
long long a, b, co;
multiset<long long> matka;

int main()
{
    scanf("%d", &n);

    for(int i=0; i<n; i++)
    {
        scanf("%lld", &a);
        matka.insert(a);
    }

    scanf("%d", &q);

    for(int g=0; g<q; g++)
    {
        scanf("%d", &co);

        if(co==2)
        {
            scanf("%d", &a);
            matka.insert(a);
        }
        if(co==3)
        {
            scanf("%d", &a);
            auto it=matka.find(a);
            matka.erase(it);
        }
        if(co==1)
        {
            scanf("%lld %lld", &a, &b);

            w=0;

            multiset<long long> staw=matka;

            while(a<b)
            {
                auto p = staw.begin();
                if(*p>=a)
                {
                    w=-1;
                    break;
                }

                auto it = staw.lower_bound(a);

                it--;

                staw.erase(it);
                a+=*it;
                w++;
            }

            printf("%d\n", w);
        }
    }

    return 0;
}