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
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
#include <cstdio>
#include <algorithm> 
int n, m, p, k, c, przed, x;

int P[101];
int P_BACK[101];
int START[101];
int K[101];
int C[101];
int prze[201];

int main(){
	scanf("%d %d", &n, &m);
	przed=2*n;
	for(int i = 0; i < n; ++i){
		scanf("%d %d %d", &p, &k, &c);
		P[i]=p;
		P_BACK[i]=p;
		START[i]=0;
		K[i]=k;
		C[i]=c;
		prze[i]=p;
		prze[n+i]=k;
	}
	std::sort(prze, prze+przed);
	int wykon=-1;
	int index=0;
	bool flag;
	do{
		flag=false;
		for(int i = 0; i < n; ++i){
			if(C[i]>0){
				index=i;
				flag=true;
				break;
			}
		}
		int old_przed = -1;
		int j = 0;
		while(j < przed){
			int przed_tmp=prze[j];
			//printf("m = %d, j = %d, przed_tmp %d\n", m, j, przed_tmp);
			//printf("wykon %d\n", wykon);
			if(przed_tmp > old_przed){
				if(wykon >= 0){
					if(przed_tmp > (START[wykon]+C[wykon]) ){
						przed_tmp=START[wykon]+C[wykon];
						j--;
					}
					//printf("przed_tmp = %d\n", przed_tmp);
					//printf("w=%d :: wykon p = %d k = %d c =%d START = %d\n", wykon, P[wykon], K[wykon], C[wykon], START[wykon]);
					C[wykon]=C[wykon]-(przed_tmp-START[wykon]);
					P[wykon]=przed_tmp;
					wykon=-1;
				}
				flag=false;
				for(int i = 0; i < n; ++i){
					if(C[i]>0){
						index=i;
						flag=true;
						break;
					}
				}
				if(!flag) break;
				for(int i=0; i<przed; ++i){
					if((P[i]<K[i]) && (K[i]>przed_tmp) && (C[i] > 0)){
						if(P[i]<=przed_tmp){
							//if(przed_tmp == 7){
							//	printf("### K[i] = %d K[index] = %d ###\n", K[i], K[index]);
							//}
							if(K[i]<K[index]){
								index=i;
							}
						}
					}
				}
				if(j<(przed-1)){
					wykon=index;
				}
				//printf("wykonnnn %d\n", wykon);
				START[wykon]=przed_tmp;
				
				
				old_przed=przed_tmp;
			}
			j++;
		}
		
		for(int i = 0; i < n; ++i){
			P[i]=P_BACK[i];
			//printf("%d: P = %d K = %d C = %d\n", i, P[i], K[i], C[i]);
		}
		m--;
	}while(flag && m > 0);
	if(flag){
		printf("NIE");
	}else{
		printf("TAK");
	}
}