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