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>
using namespace std;
#define M 100001

struct Potwor { int d; int a; int nr;};
bool Por(const Potwor& p1, const Potwor& p2) {
  return p1.d<p2.d;
};
bool Por2(const Potwor& p1, const Potwor& p2) {
  return p1.a>p2.a;
};

int main( )
{
    ios_base::sync_with_stdio(0);
    int n, a, d;
    long long z;
    Potwor P[M];
    cin>>n>>z;
    int i=0, k=1, j=n-1, ans=1;
    while(i<=j) {
      cin>>d>>a;
      if(d<a) {
	P[i].d=d;
	P[i].a=a;
	P[i].nr=k;
	i++; k++;
      }
      else {
	P[j].d=d;
	P[j].a=a;
	P[j].nr=k;
	j--; k++;
      }
    }
    
   if(j!=-1)
     sort(P,P+i, Por);
   if(j!=n-1)
     sort(P+j+1,P+n, Por2);
   
   for(int ii=0; ii<n; ++ii) {
     z=z-P[ii].d;
     if(z<=0) {
       ans=0;
       break;
     }
     z=z+P[ii].a;
  }
  if(ans==0)
    cout<<"NIE\n";
  else {
    cout<<"TAK\n";
    for(int ii=0; ii<n; ++ii)
      cout<<P[ii].nr<<" ";
  }
    
  return 0;
}