#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; } |
English