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