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
#define first F
#define second S
#include<iostream>
#include<cstdlib>
#include<algorithm>
#include<cstdio>
using namespace std;
bool f (pair <int, int> a, pair <int, int> b)
{
	return a.S>b.S;
}
int main ()
{
	int n, z, a, b;
	bool zycie=true;
	scanf("%d%d", &n, &z);
	pair <int, int> tab[n];
	for (int i=0; i<n; i++)
	{
		scanf("%d%d", &a, &b);
		tab[i].F=i+1;
		tab[i].S=b-a;
	}
	sort(tab, tab+n, f);
	for (int i=0; i<n && zycie; i++)
	{
		z+=tab[i].S;
		if (z<=0) zycie=false;
	}
	if (zycie==true)
	{
		printf("TAK\n");
		for (int i=0; i<n; i++) printf("%d ", tab[i].F);
	}
	else printf("NIE\n");
	return 0;
}