#include <cstdio>
int main(){
int n, player;
scanf("%d", &n);
scanf("%d", &player);
int atak[n];
int eliksir[n];
unsigned int index[n];
int sila = player;
for(int i = 0; i < n; i++){
scanf("%d", &atak[i]);
scanf("%d", &eliksir[i]);
sila = sila - atak[i] + eliksir[i];
index[i] = i;
}
if(sila <= 0){
printf("%s\n", "NIE");
return 0;
}
int pocz = 0;
int koniec = n;
int j , v, x;
unsigned int y;
for (int k = pocz + 1; k < koniec ; k++) { // pÄ?tla zewnÄ?trzna, k to pierwszy nieposortowany
j = k - 1; // zaczynamy od elementu k-1
v = eliksir[k] ; // kopiujemy wyróşniony element do zmiennej v
x = atak[k];
y = index[k];
while ( j >= 0 && v < eliksir[j] ) // dopĂłki v jest mniejszy niĹź a[j]
{ // i nie osiÄ?gniÄ?ty zostaĹ? poczÄ?tek tablicy
eliksir[j+1] = eliksir[j]; // przesuĹ? element w prawo
atak[j+1] = atak[j];
index[j+1] = index[j];
j-- ; // sprawdĹş poprzedni element
} // niezmiennik: (j==-1) lub (v >= a[j])
eliksir[j+1] = v ;
atak[j+1] = x;
index[j+1] = y;
}
int h = n;
int m = n;
int licznik = 0;
int output[n];
while(n >= 0){
bool flaga = true;
while(h >= 0 && flaga == true){
if(atak[h] != -1 && atak[h] < player){
player = player - atak[h] + eliksir[h];
atak[h] = -1;
eliksir[h] = -1;
flaga = false;
output[licznik] = index[h];
licznik++;
}
h--;
}
n--;
}
printf("%s\n", "TAK");
for(int i = 0; i < m; i++){
printf("%d", output[i]+1);
printf("%s", " ");
}
}
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 | #include <cstdio> int main(){ int n, player; scanf("%d", &n); scanf("%d", &player); int atak[n]; int eliksir[n]; unsigned int index[n]; int sila = player; for(int i = 0; i < n; i++){ scanf("%d", &atak[i]); scanf("%d", &eliksir[i]); sila = sila - atak[i] + eliksir[i]; index[i] = i; } if(sila <= 0){ printf("%s\n", "NIE"); return 0; } int pocz = 0; int koniec = n; int j , v, x; unsigned int y; for (int k = pocz + 1; k < koniec ; k++) { // pÄ?tla zewnÄ?trzna, k to pierwszy nieposortowany j = k - 1; // zaczynamy od elementu k-1 v = eliksir[k] ; // kopiujemy wyróşniony element do zmiennej v x = atak[k]; y = index[k]; while ( j >= 0 && v < eliksir[j] ) // dopĂłki v jest mniejszy niĹź a[j] { // i nie osiÄ?gniÄ?ty zostaĹ? poczÄ?tek tablicy eliksir[j+1] = eliksir[j]; // przesuĹ? element w prawo atak[j+1] = atak[j]; index[j+1] = index[j]; j-- ; // sprawdĹş poprzedni element } // niezmiennik: (j==-1) lub (v >= a[j]) eliksir[j+1] = v ; atak[j+1] = x; index[j+1] = y; } int h = n; int m = n; int licznik = 0; int output[n]; while(n >= 0){ bool flaga = true; while(h >= 0 && flaga == true){ if(atak[h] != -1 && atak[h] < player){ player = player - atak[h] + eliksir[h]; atak[h] = -1; eliksir[h] = -1; flaga = false; output[licznik] = index[h]; licznik++; } h--; } n--; } printf("%s\n", "TAK"); for(int i = 0; i < m; i++){ printf("%d", output[i]+1); printf("%s", " "); } } |
English