#include <iostream> #include<cstdio> using namespace std; class boss { public: int dmg; int hp; int lp; }; int main() { int z,hp; scanf("%d%d",&z,&hp); boss bos[100009]; int sumahp=hp,sumadmg=0; bool pom=false; for (int i=0;i<z;i++) { scanf("%d%d",&bos[i].dmg,&bos[i].hp); bos[i].lp=i+1; if ((bos[i].dmg>=hp) && (pom==false)) { pom=false; } else pom=true; sumahp+=bos[i].hp; sumadmg+=bos[i].dmg; } if (pom==false) { printf("NIE"); return 0; } while (pom) { pom=false; for (int i=0;i<z-1;i++) { if (bos[i].dmg>bos[i+1].dmg) { swap(bos[i],bos[i+1]); pom=true; } } } pom=true; while (pom) { pom=false; for (int i=0;i<z-1;i++) { if (bos[i].hp<bos[i+1].hp) { swap(bos[i],bos[i+1]); pom=true; } } } // for (int i=0;i<z;i++) { // printf("%d %d %d\n",bos[i].dmg,bos[i].hp,bos[i].lp); // } int t[z+1]; bool czyzbil=true; int licznik=0; while(czyzbil) { czyzbil=false; for (int i=0;i<z;i++) { if ((hp>bos[i].dmg) && (bos[i].lp!=0)) { t[licznik]=bos[i].lp; hp-=bos[i].dmg; hp+=bos[i].hp; bos[i].dmg=0; bos[i].hp=0; bos[i].lp=0; czyzbil=true; licznik++; } } } //printf("%d\n",licznik); if (licznik!=z) { printf("NIE"); } else { printf("TAK\n"); for (int i=0; i<z; i++) { printf("%d ",t[i]); } } // printf("\n\n"); // for (int i=0;i<z;i++) { // printf("%d %d %d\n",bos[i].dmg,bos[i].hp,bos[i].lp); // } // printf("%d %d",sumahp,sumadmg); 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 | #include <iostream> #include<cstdio> using namespace std; class boss { public: int dmg; int hp; int lp; }; int main() { int z,hp; scanf("%d%d",&z,&hp); boss bos[100009]; int sumahp=hp,sumadmg=0; bool pom=false; for (int i=0;i<z;i++) { scanf("%d%d",&bos[i].dmg,&bos[i].hp); bos[i].lp=i+1; if ((bos[i].dmg>=hp) && (pom==false)) { pom=false; } else pom=true; sumahp+=bos[i].hp; sumadmg+=bos[i].dmg; } if (pom==false) { printf("NIE"); return 0; } while (pom) { pom=false; for (int i=0;i<z-1;i++) { if (bos[i].dmg>bos[i+1].dmg) { swap(bos[i],bos[i+1]); pom=true; } } } pom=true; while (pom) { pom=false; for (int i=0;i<z-1;i++) { if (bos[i].hp<bos[i+1].hp) { swap(bos[i],bos[i+1]); pom=true; } } } // for (int i=0;i<z;i++) { // printf("%d %d %d\n",bos[i].dmg,bos[i].hp,bos[i].lp); // } int t[z+1]; bool czyzbil=true; int licznik=0; while(czyzbil) { czyzbil=false; for (int i=0;i<z;i++) { if ((hp>bos[i].dmg) && (bos[i].lp!=0)) { t[licznik]=bos[i].lp; hp-=bos[i].dmg; hp+=bos[i].hp; bos[i].dmg=0; bos[i].hp=0; bos[i].lp=0; czyzbil=true; licznik++; } } } //printf("%d\n",licznik); if (licznik!=z) { printf("NIE"); } else { printf("TAK\n"); for (int i=0; i<z; i++) { printf("%d ",t[i]); } } // printf("\n\n"); // for (int i=0;i<z;i++) { // printf("%d %d %d\n",bos[i].dmg,bos[i].hp,bos[i].lp); // } // printf("%d %d",sumahp,sumadmg); return 0; } |