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
#include<iostream>
#include<algorithm>
#include <vector>


using namespace std;

struct pkt {
    int di;
    int ai;
    int ind;
};

bool Comparator(const pkt a, const pkt b) {
    return a.ai > b.ai;
}

int main() {
    ios::sync_with_stdio(0);
    int n, z;
    cin >> n >> z;
    pkt tab[n];
    for (int i = 0; i < n; i++) {
        cin >> tab[i].di >> tab[i].ai;
        tab[i].ind = i + 1;
    }
    sort(tab, tab + n, Comparator);
    //    for (int i = 0; i < n; i++) {
    //        cout << tab[i].di << " " << tab[i].ai << endl;
    //    }
    int wartpocz = z;
    bool wynik = 0;
    int taba[1000000];
    int iterator = 0;
    for (int i = 0; i < n; i++) {
        if ((wartpocz - tab[i].di) + tab[i].ai > 0) {
            wartpocz = (wartpocz - tab[i].di) + tab[i].ai;
            taba[iterator] = tab[i].ind;
            iterator++;
            wynik = true;
        } else {
            wynik = false;
            break;
        }
    }
   
    if (wynik == 0) {
        cout << "NIE" << endl;
        return 0;
    }
    if (wynik == true) {
        cout << "TAK" << endl;

        for (int i = 0; i < iterator; i++) {
            cout << taba[i] << " ";
        }
        return 0;
    }

}