#include<iostream> #include<vector> #include<algorithm> using namespace std; struct zad { int p; int k; int c; int r; }; struct po_r { inline bool operator() (const zad& struct1, const zad& struct2) { return (struct1.r < struct2.r); } }; int main() { int n,m,poczatek, koniec,a; vector<zad> tab; cin>>n>>m; int* wynik = new int[1000001]; for (int i = 0; i < n; i++) { zad z; cin>>z.p>>z.k>>z.c; z.r = z.k - z.p - z.c; tab.push_back(z); } int flaga = 1; sort(tab.begin(), tab.end(), po_r()); for (a = 0; a<1000001; a++) wynik[a] = 0; a = 0; while (a < tab.size() && flaga) { while (tab[a].c > 0 && flaga) { poczatek = tab[a].p; koniec = tab[a].k; int min = 1000001; int indeks = 1000001; while (poczatek < koniec) { if (wynik[poczatek] < m && wynik[poczatek] < min) { indeks = poczatek; min = wynik[poczatek]; } poczatek++; } if (indeks == 1000001) flaga = 0; else { wynik[indeks]++; tab[a].c--; } } a++; } if (flaga) cout<<"TAK\n"; else cout<<"NIE\n"; 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 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 | #include<iostream> #include<vector> #include<algorithm> using namespace std; struct zad { int p; int k; int c; int r; }; struct po_r { inline bool operator() (const zad& struct1, const zad& struct2) { return (struct1.r < struct2.r); } }; int main() { int n,m,poczatek, koniec,a; vector<zad> tab; cin>>n>>m; int* wynik = new int[1000001]; for (int i = 0; i < n; i++) { zad z; cin>>z.p>>z.k>>z.c; z.r = z.k - z.p - z.c; tab.push_back(z); } int flaga = 1; sort(tab.begin(), tab.end(), po_r()); for (a = 0; a<1000001; a++) wynik[a] = 0; a = 0; while (a < tab.size() && flaga) { while (tab[a].c > 0 && flaga) { poczatek = tab[a].p; koniec = tab[a].k; int min = 1000001; int indeks = 1000001; while (poczatek < koniec) { if (wynik[poczatek] < m && wynik[poczatek] < min) { indeks = poczatek; min = wynik[poczatek]; } poczatek++; } if (indeks == 1000001) flaga = 0; else { wynik[indeks]++; tab[a].c--; } } a++; } if (flaga) cout<<"TAK\n"; else cout<<"NIE\n"; return 0; } |