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
#include<iostream>
#include<algorithm>
using namespace std;

class Potwor {
public:
    long long int ileTrac, ileZysk, numer;
    Potwor() {}
    friend bool operator < (const Potwor & pot1, const Potwor & pot2) {
        long long int zysk1 = pot1.ileZysk - pot1.ileTrac, zysk2 = pot2.ileZysk - pot2.ileTrac;
        if(zysk1 < 0 && zysk2 >= 0) return false;
        if(zysk1 >= 0 && zysk2 < 0) return true;
        if(zysk1 >= 0 && zysk2 >= 0) return pot1.ileTrac < pot2.ileTrac;
        return !(pot1.ileTrac < pot2.ileTrac);
    }
};

const int ROZMIAR = 100100;
long long int ile, zycie;
Potwor tab[ROZMIAR];

int main() {
    ios_base::sync_with_stdio(false);
    cin >> ile >> zycie;
    for(int i = 0; i < ile; i++) {
        cin >> tab[i].ileTrac >> tab[i].ileZysk;
        tab[i].numer = i + 1;
    }
    sort(tab, tab + ile);
    for(int i = 0; i < ile; i++) {
        zycie -= tab[i].ileTrac;
        if(zycie <= 0) {
            cout << "NIE";
            return 0;
        }
        zycie += tab[i].ileZysk;
    }
    cout << "TAK" << endl;
    for(int i = 0; i < ile; i++) {
        cout << tab[i].numer << " ";
    }
    return 0;
}