#include <cstdio>
#include <algorithm>
using namespace std;
int n;
long long zycie;
struct q {
int obrazenia;
int potion;
int nr;
bool priority;
void czyPlus() {
priority = (potion >= obrazenia);
}
} el, tab[100000];
bool cmp(const q &el1,const q &el2) {
return (el1.priority > el2.priority) || ((el1.priority == 1 && el2.priority==1) && (el1.obrazenia < el2. obrazenia))
|| ((el1.priority == 0 && el2.priority==0) && (el1.potion > el2.potion));
}
int main() {
scanf("%d%lld",&n,&zycie);
for(int i = 0;i < n; ++i) {
scanf("%d%d",&tab[i].obrazenia, &tab[i].potion);
tab[i].nr = (i+1);
tab[i].czyPlus();
}
sort(tab, tab+n, cmp);
for(int i = 0;i < n; ++i) {
zycie -= tab[i].obrazenia;
if(zycie <= 0) {printf("NIE\n"); return 0;}
//printf("%d %d %d --> %lld\n",tab[i].obrazenia, tab[i].potion, tab[i].nr, zycie);
zycie += tab[i].potion;
}
printf("TAK\n");
for(int i = 0; i < n; ++i) {
printf("%d ",tab[i].nr);
}
printf("\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 | #include <cstdio> #include <algorithm> using namespace std; int n; long long zycie; struct q { int obrazenia; int potion; int nr; bool priority; void czyPlus() { priority = (potion >= obrazenia); } } el, tab[100000]; bool cmp(const q &el1,const q &el2) { return (el1.priority > el2.priority) || ((el1.priority == 1 && el2.priority==1) && (el1.obrazenia < el2. obrazenia)) || ((el1.priority == 0 && el2.priority==0) && (el1.potion > el2.potion)); } int main() { scanf("%d%lld",&n,&zycie); for(int i = 0;i < n; ++i) { scanf("%d%d",&tab[i].obrazenia, &tab[i].potion); tab[i].nr = (i+1); tab[i].czyPlus(); } sort(tab, tab+n, cmp); for(int i = 0;i < n; ++i) { zycie -= tab[i].obrazenia; if(zycie <= 0) {printf("NIE\n"); return 0;} //printf("%d %d %d --> %lld\n",tab[i].obrazenia, tab[i].potion, tab[i].nr, zycie); zycie += tab[i].potion; } printf("TAK\n"); for(int i = 0; i < n; ++i) { printf("%d ",tab[i].nr); } printf("\n"); return 0; } |
English