#include <iostream>
#include <vector>
using namespace std;
const int MaxT = 1000001;
vector < int > poczatki[MaxT], konce[MaxT];
int czasy[100];
int n, m;
int otwarte;
long long zapas, suma;
int a, b, c;
bool nadazam = true;
int mini = MaxT, maxi = 0;
int main()
{
cin>>n>>m;
for (int i = 0; i < n; i++)
{
cin>>a>>b>>c;
mini = min (mini, a);
maxi = max (maxi, b);
poczatki[a].push_back(i);
konce[b].push_back(i);
czasy[i] = c;
}
for (int t = mini; t <= maxi; t++)
{
zapas = min (suma, zapas + min (otwarte, m));
for (int i = 0; i < poczatki[t].size(); i++)
{
otwarte++;
suma += czasy[poczatki[t][i]];
}
for (int i = 0; i < konce[t].size(); i++)
{
otwarte--;
zapas -= czasy[konce[t][i]];
suma -= czasy[konce[t][i]];
}
if (zapas < 0l)
nadazam = false;
}
if (nadazam)
cout<<"TAK"<<endl;
else
cout<<"NIE"<<endl;
}
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 | #include <iostream> #include <vector> using namespace std; const int MaxT = 1000001; vector < int > poczatki[MaxT], konce[MaxT]; int czasy[100]; int n, m; int otwarte; long long zapas, suma; int a, b, c; bool nadazam = true; int mini = MaxT, maxi = 0; int main() { cin>>n>>m; for (int i = 0; i < n; i++) { cin>>a>>b>>c; mini = min (mini, a); maxi = max (maxi, b); poczatki[a].push_back(i); konce[b].push_back(i); czasy[i] = c; } for (int t = mini; t <= maxi; t++) { zapas = min (suma, zapas + min (otwarte, m)); for (int i = 0; i < poczatki[t].size(); i++) { otwarte++; suma += czasy[poczatki[t][i]]; } for (int i = 0; i < konce[t].size(); i++) { otwarte--; zapas -= czasy[konce[t][i]]; suma -= czasy[konce[t][i]]; } if (zapas < 0l) nadazam = false; } if (nadazam) cout<<"TAK"<<endl; else cout<<"NIE"<<endl; } |
English