#include <cstdio> #include <vector> #include <algorithm> using namespace std; typedef long long int lli; struct mon { lli d, u; int id; }; bool operator<(mon a, mon b) { return a.d<b.d; } vector<mon> v1, v2; vector<int> w1, w2; int main() { int n; lli z, zk=0LL; mon x; scanf("%d%lld", &n, &z); for (int i=0; i<n; i++) { scanf("%lld%lld", &x.d, &x.u); x.id=i+1; if (x.d<=x.u) v1.push_back(x); else { zk-=x.d-x.u; swap(x.d, x.u); v2.push_back(x); } } sort(v1.begin(), v1.end()); sort(v2.begin(), v2.end()); //for (int i=0; i<v1.size(); i++) printf(" %lld %lld\n", v1[i].d, v1[i].u); printf("\n"); //for (int i=0; i<v2.size(); i++) printf(" %lld %lld\n", v2[i].d, v2[i].u); for (int i=0; i<v1.size(); i++) { if (v1[i].d>=z) { printf("NIE\n"); return 0; } z-=v1[i].d; z+=v1[i].u; w1.push_back(v1[i].id); } zk+=z; for (int i=0; i<v2.size(); i++) { if (v2[i].d>=zk) { printf("NIE\n"); return 0; } zk-=v2[i].d; zk+=v2[i].u; w2.push_back(v2[i].id); } printf("TAK\n"); for (int i=0; i<w1.size(); i++) printf("%d ", w1[i]); for (int i=w2.size()-1; i>=0; i--) printf("%d ", w2[i]); printf("\n"); return 0; //ADG }
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 74 75 76 77 78 79 80 81 82 83 84 85 | #include <cstdio> #include <vector> #include <algorithm> using namespace std; typedef long long int lli; struct mon { lli d, u; int id; }; bool operator<(mon a, mon b) { return a.d<b.d; } vector<mon> v1, v2; vector<int> w1, w2; int main() { int n; lli z, zk=0LL; mon x; scanf("%d%lld", &n, &z); for (int i=0; i<n; i++) { scanf("%lld%lld", &x.d, &x.u); x.id=i+1; if (x.d<=x.u) v1.push_back(x); else { zk-=x.d-x.u; swap(x.d, x.u); v2.push_back(x); } } sort(v1.begin(), v1.end()); sort(v2.begin(), v2.end()); //for (int i=0; i<v1.size(); i++) printf(" %lld %lld\n", v1[i].d, v1[i].u); printf("\n"); //for (int i=0; i<v2.size(); i++) printf(" %lld %lld\n", v2[i].d, v2[i].u); for (int i=0; i<v1.size(); i++) { if (v1[i].d>=z) { printf("NIE\n"); return 0; } z-=v1[i].d; z+=v1[i].u; w1.push_back(v1[i].id); } zk+=z; for (int i=0; i<v2.size(); i++) { if (v2[i].d>=zk) { printf("NIE\n"); return 0; } zk-=v2[i].d; zk+=v2[i].u; w2.push_back(v2[i].id); } printf("TAK\n"); for (int i=0; i<w1.size(); i++) printf("%d ", w1[i]); for (int i=w2.size()-1; i>=0; i--) printf("%d ", w2[i]); printf("\n"); return 0; //ADG } |