#include <cstdio> #include <algorithm> #include <vector> using namespace std; struct pole { int a; int b; int x; }; pole p; vector<pole> v1; //wygrane vector<pole> v2; //przegrane vector<pole> q; bool cmp(pole s, pole q) { if (s.a!=q.a) return s.a < q.a; else return s.b >q.b; } bool cmp2(pole s, pole q) { if (s.b != q.b) return s.b > q.b; else return s.a > q.a; } int main() { int n; long long hp; scanf("%d%lld", &n, &hp); for (int i=1; i<=n; i++) { scanf("%d%d",&p.a, &p.b); p.x=i; if (p.b>=p.a) v1.push_back(p); else v2.push_back(p); } sort(v1.begin(),v1.end(),cmp); sort(v2.begin(),v2.end(),cmp2); int d1=v1.size(),d2=v2.size(); int i=0, test=0; while (i<d1) { if (v1[i].a>=hp) test=1; else hp+=v1[i].b-v1[i].a; i++; } i=0; // printf("%lld", hp); //for (int i=0; i<d2; i++) // // printf("%d %d %d\n", v2[i].a, v2[i].b, v2[i].x); // while(i<d2) { if (v2[i].a>=hp) test=1; else hp+=v2[i].b-v2[i].a; ++i; } if (test !=0) printf("NIE\n"); else { printf("TAK\n"); for (int i=0; i<d1; i++) printf("%d ", v1[i].x); for (int i=0; i<d2; i++) printf("%d ", v2[i].x); } }
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 | #include <cstdio> #include <algorithm> #include <vector> using namespace std; struct pole { int a; int b; int x; }; pole p; vector<pole> v1; //wygrane vector<pole> v2; //przegrane vector<pole> q; bool cmp(pole s, pole q) { if (s.a!=q.a) return s.a < q.a; else return s.b >q.b; } bool cmp2(pole s, pole q) { if (s.b != q.b) return s.b > q.b; else return s.a > q.a; } int main() { int n; long long hp; scanf("%d%lld", &n, &hp); for (int i=1; i<=n; i++) { scanf("%d%d",&p.a, &p.b); p.x=i; if (p.b>=p.a) v1.push_back(p); else v2.push_back(p); } sort(v1.begin(),v1.end(),cmp); sort(v2.begin(),v2.end(),cmp2); int d1=v1.size(),d2=v2.size(); int i=0, test=0; while (i<d1) { if (v1[i].a>=hp) test=1; else hp+=v1[i].b-v1[i].a; i++; } i=0; // printf("%lld", hp); //for (int i=0; i<d2; i++) // // printf("%d %d %d\n", v2[i].a, v2[i].b, v2[i].x); // while(i<d2) { if (v2[i].a>=hp) test=1; else hp+=v2[i].b-v2[i].a; ++i; } if (test !=0) printf("NIE\n"); else { printf("TAK\n"); for (int i=0; i<d1; i++) printf("%d ", v1[i].x); for (int i=0; i<d2; i++) printf("%d ", v2[i].x); } } |