#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; }
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; } |