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
#include <iostream>
#include <set>
using namespace std;
set<pair<int, int> > zad;
set<pair<int, int> > czas;
struct wejscie
{
	int a, b, c;
};
wejscie wej[1000002];
int main()
{
	ios_base::sync_with_stdio(0);
	int n, m;
	cin >> n >> m;
	for (int i=0; i<n; i++)
	{
		cin >> wej[i].a >> wej[i].b >> wej[i].c;	
		czas.insert(make_pair(wej[i].a, i));
		
	}
	while (!czas.empty())
	{
		pair<int, int> para=*czas.begin();
		int i=para.second;
		if (i==-1)
			m++;
		else
		{
			int pom=wej[i].b-wej[i].c;
			//cout << i << " " << wej[i].a << " " << wej[i].b << " " << wej[i].c << "\n";
			zad.insert(make_pair(pom, i));
		}
		if (m>0 && !zad.empty())
		{
			pair<int, int> zadpara=*zad.begin();
			zad.erase(zadpara);
			//cout << para.first << " " << para.second << " " << zadpara.first << " " << zadpara.second << "l\n";
			if (zadpara.first<para.first)
			{
				cout << "NIE";
				return 0;
			}
			czas.insert(make_pair(para.first+wej[zadpara.second].c, -1));
			m--;
		}
		czas.erase(para);
	}
	cout << "TAK\n";
	return 0;
}