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

using namespace std;

long long int n, m, wynik=0, hp, a, b, c, punkt=1000000;
vector <int> wyniki;
pair < pair <int, int> , int> t[100010];
bool czymasens=1;

int main()
{
    cin >> n >> hp;
    for (int i=0; i<n; i++)
    {
        cin >> a >> b;
        b=b-a;
        t[i]=make_pair(make_pair(b, a), i);
    }
    sort(t, t+n);
    //for (int i=0; i<n; i++)
    //cout << t[i].first.first << " " << t[i].first.second << "  " << t[i].second << endl;

    for (int i=0; i<n; i++)
    if (t[i].first.first>0) {punkt=i; break;}

    for (int i=0; i<n; i++)
    swap(t[i].first.first, t[i].first.second);

    sort(t+punkt, t+n);
    sort(t, t+punkt);

    //for (int i=0; i<n; i++)
    //cout << t[i].first.first << " " << t[i].first.second << "  " << t[i].second << endl;

    for (int i=punkt; i<n; i++)
    {
        //cout << hp << "endl" << endl << endl;
        if (hp>t[i].first.first)
         {wyniki.push_back(t[i].second); hp+=t[i].first.second;} else {czymasens=0; break;}
    }

    if (czymasens)
    for (int i=punkt-1; i>=0; i--)
    {
        //cout << hp << "kendl" << endl << endl;
        if (hp>t[i].first.first)
         {wyniki.push_back(t[i].second); hp+=t[i].first.second;} else {czymasens=0; break;}
    }

    if (czymasens)
    { cout << "TAK" << endl;
    for (int i=0; i<wyniki.size(); i++)
    cout << wyniki[i]+1 << " ";}
    else
    cout << "NIE";



}