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>
#include<algorithm>
#include<cmath>
using namespace std;
const int N=1000002;
int tab[N];
set <int> konce;
set <int> :: iterator it;
int n, m, i, p , k , c, dl, j, maks= 0, pocz;


int main()
{
ios_base::sync_with_stdio(0);
cin >> n >> m;
konce.insert(0);
while(n--){
	cin >> p >> k >> c;
	for(it = konce.begin();it!=konce.end();++it){
		pocz = *it; 
		if(pocz >= p && pocz + c <= k )
		{
		for(j = pocz; j < pocz + c; ++j) if(tab[j] + 1 > maks) break;
		if(j == pocz + c) {
			for(i = pocz; i < pocz + c; ++i) tab[i]++;
			if(pocz + c <= 1000000) konce.insert(pocz + c);
			break;
			}
		}
	}	
	if(it == konce.end()) 	
		{
		if(tab[p] + 1 <= m) {
			for(i = p; i < p + c; ++i) tab[i]++;
			konce.insert(p + c);
			maks++;
			}
		else {
			cout <<"NIE"; 
			return 0;
			}
		}
}	
	
cout <<"TAK"; 	



return 0; 
}