#include <stdio.h> #include <vector> #include <algorithm> #include <mutex> #include <thread> using namespace std; struct elem { elem() {} elem(int a, int b, int bb, int c) : first(a), second(b), bil(bb), id(c) {} int first; int second; int id; int bil; }; vector< elem > dane; struct cmp { bool operator()(const elem &a, const elem &b) { if (a.bil > 0 && b.bil > 0) return a.first < b.first; if (a.bil < 0 && b.bil < 0) return a.first > b.first; return a.bil > b.bil; } }; int main() { int a, b, n, z; scanf("%d %d", &n, &z); for (int i = 1; i <= n; ++i) { scanf("%d %d", &a, &b); dane.push_back(elem(a, b, b - a, i)); } sort(dane.begin(), dane.end(), cmp()); bool ret = true; for (auto&a : dane) { z += a.second - a.first; if (z <= 0) { ret = false; break; } } if (ret) { puts("TAK"); for (auto& a : dane) { printf("%d ", a.id); } printf("\n"); } else puts("NIE"); 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 | #include <stdio.h> #include <vector> #include <algorithm> #include <mutex> #include <thread> using namespace std; struct elem { elem() {} elem(int a, int b, int bb, int c) : first(a), second(b), bil(bb), id(c) {} int first; int second; int id; int bil; }; vector< elem > dane; struct cmp { bool operator()(const elem &a, const elem &b) { if (a.bil > 0 && b.bil > 0) return a.first < b.first; if (a.bil < 0 && b.bil < 0) return a.first > b.first; return a.bil > b.bil; } }; int main() { int a, b, n, z; scanf("%d %d", &n, &z); for (int i = 1; i <= n; ++i) { scanf("%d %d", &a, &b); dane.push_back(elem(a, b, b - a, i)); } sort(dane.begin(), dane.end(), cmp()); bool ret = true; for (auto&a : dane) { z += a.second - a.first; if (z <= 0) { ret = false; break; } } if (ret) { puts("TAK"); for (auto& a : dane) { printf("%d ", a.id); } printf("\n"); } else puts("NIE"); return 0; } |