#include <iostream> #include <set> using namespace std; set<pair<int, int> > zad; set<pair<int, int> > czas; struct wejscie { int a, b, c; }; wejscie wej[1000002]; int main() { ios_base::sync_with_stdio(0); int n, m; cin >> n >> m; for (int i=0; i<n; i++) { cin >> wej[i].a >> wej[i].b >> wej[i].c; czas.insert(make_pair(wej[i].a, i)); } while (!czas.empty()) { pair<int, int> para=*czas.begin(); int i=para.second; if (i==-1) m++; else { int pom=wej[i].b-wej[i].c; //cout << i << " " << wej[i].a << " " << wej[i].b << " " << wej[i].c << "\n"; zad.insert(make_pair(pom, i)); } if (m>0 && !zad.empty()) { pair<int, int> zadpara=*zad.begin(); zad.erase(zadpara); //cout << para.first << " " << para.second << " " << zadpara.first << " " << zadpara.second << "l\n"; if (zadpara.first<para.first) { cout << "NIE"; return 0; } czas.insert(make_pair(para.first+wej[zadpara.second].c, -1)); m--; } czas.erase(para); } cout << "TAK\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 | #include <iostream> #include <set> using namespace std; set<pair<int, int> > zad; set<pair<int, int> > czas; struct wejscie { int a, b, c; }; wejscie wej[1000002]; int main() { ios_base::sync_with_stdio(0); int n, m; cin >> n >> m; for (int i=0; i<n; i++) { cin >> wej[i].a >> wej[i].b >> wej[i].c; czas.insert(make_pair(wej[i].a, i)); } while (!czas.empty()) { pair<int, int> para=*czas.begin(); int i=para.second; if (i==-1) m++; else { int pom=wej[i].b-wej[i].c; //cout << i << " " << wej[i].a << " " << wej[i].b << " " << wej[i].c << "\n"; zad.insert(make_pair(pom, i)); } if (m>0 && !zad.empty()) { pair<int, int> zadpara=*zad.begin(); zad.erase(zadpara); //cout << para.first << " " << para.second << " " << zadpara.first << " " << zadpara.second << "l\n"; if (zadpara.first<para.first) { cout << "NIE"; return 0; } czas.insert(make_pair(para.first+wej[zadpara.second].c, -1)); m--; } czas.erase(para); } cout << "TAK\n"; return 0; } |