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