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