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


int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int n, q;
    cin >> n;
    multiset <long long> rybki;
    for (int i = 0; i < n; i++) {
        long long w;
        cin >> w;
        rybki.insert(w);
    }
    cin >> q;
    while (q-->0) {
        int typ;
        cin >> typ;
        if (typ == 1) {
            long long jest, oczek;
            cin >> jest >> oczek;
            vector <long long> zjedzone;
            while (jest < oczek && rybki.size() > 0) {
                auto it = rybki.lower_bound(jest);
                if (it != rybki.begin()) {
                    it--;
                    jest += *it;
                    rybki.erase(it);
                    zjedzone.push_back(*it);
                } else {
                    break;
                }
            }
            if (jest >= oczek) {
                cout << zjedzone.size() << "\n";
            } else {
                cout << -1 << "\n";
            } 
            for (auto c : zjedzone) {
                rybki.insert(c);
            }
        } else if (typ == 2) {
            long long w;
            cin >> w;
            rybki.insert(w);
        } else {
            long long w;
            cin >> w;
            rybki.erase(w);
        }
    }
}