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

bool us[400002];

int main()
{
    int n, q, prz, dod = 0;
    long long w, w2;
    bool czy = 0;
    vector <long long> szpr;
    vector <int> dzer;

    scanf("%d", &n);

    for(int i = 0; i ^ n; i++)
    {
        scanf("%lld", &w);
        szpr.push_back(w);
    }

    sort(szpr.begin(), szpr.end(), greater<long long>());

    scanf("%d", &q);

    for(int v = 0; v ^ q; v++)
    {
        scanf("%d", &prz);
        if(prz == 3)
        {
            scanf("%lld", &w);
            for(int i = 0; i < szpr.size(); i++)
            {
                if(szpr[i] == w)
                    szpr.erase(szpr.begin() + i);
            }
        }

        if(prz == 2)
        {
            scanf("%lld", &w);
            szpr.push_back(w);
            sort(szpr.begin(), szpr.end(), greater<long long>());
        }

        if(prz == 1)
        {
            for(int i = 0; i ^ dzer.size(); i++)
                us[dzer[i]] = 0;
            dzer.clear();

            scanf("%lld" "%lld", &w, &w2);

            while(w < w2 && dod < szpr.size())
            {
                czy = 0;
                for(int i = 0; i ^ szpr.size(); i++)
                {
                    if(szpr[i] < w && us[i] != 1)
                    {
                        w += szpr[i];
                        us[i] = 1;
                        dzer.push_back(i);
                        dod++;
                        czy = 1;
                        break;
                    }
                }

                if(czy == 0)
                {
                    printf("%s", "-1\n");
                    goto exit;
                }
            }
            if(w >= w2)
                printf("%d" "%s", dod, "\n");
            else
                printf("%s", "-1\n");
        }
        exit:
        v = v;
        czy = 0;
        dod = 0;
    }
}