#include <stdio.h> #include <stdlib.h> #define NAJW_SMOKOW 100 ## 000 struct smok { int sila, eliksir, nr_porzadkowy; }; int od_najslabszego(const void *a, const void *b) { return ((struct smok*)a)->sila - ((struct smok*)b)->sila; } int od_najsilniejszego(const void *a, const void *b) { return ((struct smok*)b)->sila - ((struct smok*)a)->sila; } int main() { struct smok hojne[NAJW_SMOKOW], skape[NAJW_SMOKOW]; int hojnych = 0, skapych = 0, smokow, zdrowie, sila, eliksir, daSie = 1, i; scanf("%d %d", &smokow, &zdrowie); for (i=0;i<smokow;++i) { scanf("%d %d", &sila, &eliksir); if (sila > eliksir) { skape[skapych].sila = sila; skape[skapych].eliksir = eliksir; skape[skapych].nr_porzadkowy = i+1; ++skapych; } else { hojne[hojnych].sila = sila; hojne[hojnych].eliksir = eliksir; hojne[hojnych].nr_porzadkowy = i+1; ++hojnych; } } qsort(hojne, hojnych, sizeof (*hojne), od_najslabszego); qsort(skape, skapych, sizeof (*skape), od_najsilniejszego); for (i=0;i<hojnych;++i) { if (zdrowie > hojne[i].sila) { zdrowie -= hojne[i].sila; zdrowie += hojne[i].eliksir; } else { daSie = 0; break; } } if (daSie) { for (i=0;i<skapych;++i) { if (zdrowie > skape[i].sila) { zdrowie -= skape[i].sila; zdrowie += skape[i].eliksir; } else { daSie = 0; break; } } } if (daSie) { puts("TAK"); for (i=0;i<hojnych;++i) printf("%d ", hojne[i].nr_porzadkowy); for (i=0;i<skapych;++i) printf("%d ", skape[i].nr_porzadkowy); puts(""); } else { puts("NIE"); } 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 93 94 95 | #include <stdio.h> #include <stdlib.h> #define NAJW_SMOKOW 100 ## 000 struct smok { int sila, eliksir, nr_porzadkowy; }; int od_najslabszego(const void *a, const void *b) { return ((struct smok*)a)->sila - ((struct smok*)b)->sila; } int od_najsilniejszego(const void *a, const void *b) { return ((struct smok*)b)->sila - ((struct smok*)a)->sila; } int main() { struct smok hojne[NAJW_SMOKOW], skape[NAJW_SMOKOW]; int hojnych = 0, skapych = 0, smokow, zdrowie, sila, eliksir, daSie = 1, i; scanf("%d %d", &smokow, &zdrowie); for (i=0;i<smokow;++i) { scanf("%d %d", &sila, &eliksir); if (sila > eliksir) { skape[skapych].sila = sila; skape[skapych].eliksir = eliksir; skape[skapych].nr_porzadkowy = i+1; ++skapych; } else { hojne[hojnych].sila = sila; hojne[hojnych].eliksir = eliksir; hojne[hojnych].nr_porzadkowy = i+1; ++hojnych; } } qsort(hojne, hojnych, sizeof (*hojne), od_najslabszego); qsort(skape, skapych, sizeof (*skape), od_najsilniejszego); for (i=0;i<hojnych;++i) { if (zdrowie > hojne[i].sila) { zdrowie -= hojne[i].sila; zdrowie += hojne[i].eliksir; } else { daSie = 0; break; } } if (daSie) { for (i=0;i<skapych;++i) { if (zdrowie > skape[i].sila) { zdrowie -= skape[i].sila; zdrowie += skape[i].eliksir; } else { daSie = 0; break; } } } if (daSie) { puts("TAK"); for (i=0;i<hojnych;++i) printf("%d ", hojne[i].nr_porzadkowy); for (i=0;i<skapych;++i) printf("%d ", skape[i].nr_porzadkowy); puts(""); } else { puts("NIE"); } return 0; } |