#include<cstdio> #include<algorithm> #include<vector> using namespace std; vector<pair<int, pair<int, int> > > dodatnie, ujemne; vector<int> wynik; int main() { long long hp; int n, d, a; bool czy_mozna=true; scanf("%d%lld", &n, &hp); for(int i=1; i<=n; i++) { scanf("%d%d", &d, &a); if(a-d>0) dodatnie.push_back(make_pair(d, make_pair(a-d, i))); //po stratach else ujemne.push_back(make_pair(a, make_pair(d, i))); //po leczeniu } sort(dodatnie.begin(), dodatnie.end()); sort(ujemne.begin(), ujemne.end()); for(int i=0; i<dodatnie.size(); i++) { if((long long)dodatnie[i].first<hp) { hp+=(long long)dodatnie[i].second.first; wynik.push_back(dodatnie[i].second.second); } else czy_mozna=false; } for(int i=ujemne.size()-1; i>=0; i--) { if((long long)ujemne[i].second.first<hp) { hp+=(long long)(ujemne[i].first-ujemne[i].second.first); wynik.push_back(ujemne[i].second.second); } else czy_mozna=false; } if(czy_mozna) { printf("TAK\n"); for(int i=0; i<wynik.size(); i++) printf("%d ", wynik[i]); } else printf("NIE\n"); }
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 | #include<cstdio> #include<algorithm> #include<vector> using namespace std; vector<pair<int, pair<int, int> > > dodatnie, ujemne; vector<int> wynik; int main() { long long hp; int n, d, a; bool czy_mozna=true; scanf("%d%lld", &n, &hp); for(int i=1; i<=n; i++) { scanf("%d%d", &d, &a); if(a-d>0) dodatnie.push_back(make_pair(d, make_pair(a-d, i))); //po stratach else ujemne.push_back(make_pair(a, make_pair(d, i))); //po leczeniu } sort(dodatnie.begin(), dodatnie.end()); sort(ujemne.begin(), ujemne.end()); for(int i=0; i<dodatnie.size(); i++) { if((long long)dodatnie[i].first<hp) { hp+=(long long)dodatnie[i].second.first; wynik.push_back(dodatnie[i].second.second); } else czy_mozna=false; } for(int i=ujemne.size()-1; i>=0; i--) { if((long long)ujemne[i].second.first<hp) { hp+=(long long)(ujemne[i].first-ujemne[i].second.first); wynik.push_back(ujemne[i].second.second); } else czy_mozna=false; } if(czy_mozna) { printf("TAK\n"); for(int i=0; i<wynik.size(); i++) printf("%d ", wynik[i]); } else printf("NIE\n"); } |