#include <iostream> #include <vector> #include <algorithm> using namespace std; struct Potwor { int numer; int obrazenia; int eliksir; }; bool operatorSortowaniaPotworow(const Potwor &p1, const Potwor &p2) { if (p1.eliksir - p1.obrazenia >= 0) { if (p2.eliksir - p2.obrazenia >= 0) { if (p1.obrazenia == p2.obrazenia) return p1.eliksir >= p2.eliksir; else return p1.obrazenia < p2.obrazenia; } else return true; } else { if (p2.eliksir - p2.obrazenia >= 0) return false; else { if (p1.obrazenia == p2.obrazenia) return p1.eliksir >= p2.eliksir; else return p1.obrazenia > p2.obrazenia; } } } int main() { int p; long long int zycie; scanf("%d %lld", &p, &zycie); vector<Potwor> potwory(p); for (int i=0; i<p; ++i) { scanf("%d %d", &potwory[i].obrazenia, &potwory[i].eliksir); potwory[i].numer = i+1; } sort(potwory.begin(), potwory.end(), operatorSortowaniaPotworow); bool zwyciezca = true; for (int i=0; i<p; ++i) { zycie -= potwory[i].obrazenia; if (zycie <= 0) { zwyciezca = false; break; } zycie += potwory[i].eliksir; } if (zwyciezca) { printf("TAK\n"); for (int i=0; i<p; ++i) { printf("%d ", potwory[i].numer); } printf("\n"); } else printf("NIE\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 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 86 | #include <iostream> #include <vector> #include <algorithm> using namespace std; struct Potwor { int numer; int obrazenia; int eliksir; }; bool operatorSortowaniaPotworow(const Potwor &p1, const Potwor &p2) { if (p1.eliksir - p1.obrazenia >= 0) { if (p2.eliksir - p2.obrazenia >= 0) { if (p1.obrazenia == p2.obrazenia) return p1.eliksir >= p2.eliksir; else return p1.obrazenia < p2.obrazenia; } else return true; } else { if (p2.eliksir - p2.obrazenia >= 0) return false; else { if (p1.obrazenia == p2.obrazenia) return p1.eliksir >= p2.eliksir; else return p1.obrazenia > p2.obrazenia; } } } int main() { int p; long long int zycie; scanf("%d %lld", &p, &zycie); vector<Potwor> potwory(p); for (int i=0; i<p; ++i) { scanf("%d %d", &potwory[i].obrazenia, &potwory[i].eliksir); potwory[i].numer = i+1; } sort(potwory.begin(), potwory.end(), operatorSortowaniaPotworow); bool zwyciezca = true; for (int i=0; i<p; ++i) { zycie -= potwory[i].obrazenia; if (zycie <= 0) { zwyciezca = false; break; } zycie += potwory[i].eliksir; } if (zwyciezca) { printf("TAK\n"); for (int i=0; i<p; ++i) { printf("%d ", potwory[i].numer); } printf("\n"); } else printf("NIE\n"); return 0; } |