#include <iostream>
#include <algorithm>
#define MAXN 100001
using namespace std;
struct monster
{
int nr;
int dam;
int hpup;
};
monster good[MAXN], bad[MAXN];
bool Good(monster a, monster b)
{
return a.dam < b.dam;
}
bool Bad(monster a, monster b)
{
if(a.hpup > b.hpup)
return true;
else if (a.hpup == b.hpup && a.dam > b.dam)
return true;
else return false;
}
void quest()
{
int n, z, d, c, j,k ;
cin >> n >> z;
j=0;
k=0;
for (int i = 0 ; i < n ; ++i)
{
cin >> d >> c;
if ( d >= c )
{
bad[j].nr = i+1;
bad[j].dam = d;
bad[j].hpup = c;
++j;
}
else
{
good[k].nr = i+1;
good[k].dam = d;
good[k].hpup = c;
++k;
}
}
sort(good, good + k, Good);
sort(bad, bad + j, Bad);
for (int i = 0; i < k; ++i)
{
z -= good[i].dam;
if(z<=0)
{
cout << "NIE";
return;
}
z+= good[i].hpup;
}
for (int i = 0; i < j; ++i)
{
z -= bad[i].dam;
if(z<=0)
{
cout << "NIE";
return;
}
z+= bad[i].hpup;
}
cout << "TAK" << endl;
for ( int i = 0; i < k; ++i)
{
cout << good[i].nr << " ";
}
for ( int i = 0; i < j; ++i)
{
cout << bad[i].nr << " ";
}
}
int main()
{
quest();
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 87 88 89 90 91 92 | #include <iostream> #include <algorithm> #define MAXN 100001 using namespace std; struct monster { int nr; int dam; int hpup; }; monster good[MAXN], bad[MAXN]; bool Good(monster a, monster b) { return a.dam < b.dam; } bool Bad(monster a, monster b) { if(a.hpup > b.hpup) return true; else if (a.hpup == b.hpup && a.dam > b.dam) return true; else return false; } void quest() { int n, z, d, c, j,k ; cin >> n >> z; j=0; k=0; for (int i = 0 ; i < n ; ++i) { cin >> d >> c; if ( d >= c ) { bad[j].nr = i+1; bad[j].dam = d; bad[j].hpup = c; ++j; } else { good[k].nr = i+1; good[k].dam = d; good[k].hpup = c; ++k; } } sort(good, good + k, Good); sort(bad, bad + j, Bad); for (int i = 0; i < k; ++i) { z -= good[i].dam; if(z<=0) { cout << "NIE"; return; } z+= good[i].hpup; } for (int i = 0; i < j; ++i) { z -= bad[i].dam; if(z<=0) { cout << "NIE"; return; } z+= bad[i].hpup; } cout << "TAK" << endl; for ( int i = 0; i < k; ++i) { cout << good[i].nr << " "; } for ( int i = 0; i < j; ++i) { cout << bad[i].nr << " "; } } int main() { quest(); return 0; } |
English