#include <iostream> #include <cstdio> #include <algorithm> #include <vector> using namespace std; int n, obrazenia, eliksir; long long int hp; pair<int, int> potwory[100010]; bool noWay; vector<pair<int, int> > dodatnie; vector<pair<int, int> > ujemne; vector<int> odp; int main() { scanf("%d%lld", &n, &hp); for(int i = 0; i < n; i++) { scanf("%d%d", &obrazenia, &eliksir); potwory[i].first = obrazenia; potwory[i].second = eliksir; if(eliksir - obrazenia < 0) ujemne.push_back(make_pair(eliksir, i)); else dodatnie.push_back(make_pair(obrazenia, i)); } sort(ujemne.begin(), ujemne.end()); sort(dodatnie.begin(), dodatnie.end()); for(int i = 0; i < dodatnie.size(); i++) { if(hp > potwory[dodatnie[i].second].first) { hp -= potwory[dodatnie[i].second].first; hp += potwory[dodatnie[i].second].second; odp.push_back(dodatnie[i].second + 1); } else { noWay = true; break; } } if(noWay) { printf("NIE\n"); return 0; } for(int i = ujemne.size() - 1; i >= 0; i--) { if(hp > potwory[ujemne[i].second].first) { hp -= potwory[ujemne[i].second].first; hp += potwory[ujemne[i].second].second; odp.push_back(ujemne[i].second + 1); } else { noWay = true; break; } } if(noWay) printf("NIE\n"); else { printf("TAK\n"); for(int i = 0; i < odp.size(); i++) printf("%d ", odp[i]); } 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 | #include <iostream> #include <cstdio> #include <algorithm> #include <vector> using namespace std; int n, obrazenia, eliksir; long long int hp; pair<int, int> potwory[100010]; bool noWay; vector<pair<int, int> > dodatnie; vector<pair<int, int> > ujemne; vector<int> odp; int main() { scanf("%d%lld", &n, &hp); for(int i = 0; i < n; i++) { scanf("%d%d", &obrazenia, &eliksir); potwory[i].first = obrazenia; potwory[i].second = eliksir; if(eliksir - obrazenia < 0) ujemne.push_back(make_pair(eliksir, i)); else dodatnie.push_back(make_pair(obrazenia, i)); } sort(ujemne.begin(), ujemne.end()); sort(dodatnie.begin(), dodatnie.end()); for(int i = 0; i < dodatnie.size(); i++) { if(hp > potwory[dodatnie[i].second].first) { hp -= potwory[dodatnie[i].second].first; hp += potwory[dodatnie[i].second].second; odp.push_back(dodatnie[i].second + 1); } else { noWay = true; break; } } if(noWay) { printf("NIE\n"); return 0; } for(int i = ujemne.size() - 1; i >= 0; i--) { if(hp > potwory[ujemne[i].second].first) { hp -= potwory[ujemne[i].second].first; hp += potwory[ujemne[i].second].second; odp.push_back(ujemne[i].second + 1); } else { noWay = true; break; } } if(noWay) printf("NIE\n"); else { printf("TAK\n"); for(int i = 0; i < odp.size(); i++) printf("%d ", odp[i]); } return 0; } |