#include #include int cmp(const void *a, const void *b) { int x = *(int*)a; int y = *(int*)b; return x - y; } void print_vetor(int *v, int n) { for (int i = 0; i < n; i++) printf("%d ", v[i]); printf("\n"); } int main() { int rodadas, total_inimigos, novos_inimigos, seed, poder_ataque; scanf("%d %d %d %d %d", &rodadas, &total_inimigos, &novos_inimigos, &seed, &poder_ataque); srand(seed); int *v = malloc((rodadas * novos_inimigos + total_inimigos) * sizeof(int)); // gera inimigos iniciais for (int i = 0; i < total_inimigos; i++) v[i] = rand() % 10000 + 1; qsort(v, total_inimigos, sizeof(int), cmp); print_vetor(v, total_inimigos); while (rodadas--) { // ---- ATAQUE ---- int pos = 0; int ataque = poder_ataque; while (pos < total_inimigos && ataque > 0) { if (ataque >= v[pos]) { ataque -= v[pos]; pos++; } else { v[pos] -= ataque; ataque = 0; } } // remove mortos int vivos = total_inimigos - pos; for (int i = 0; i < vivos; i++) v[i] = v[i + pos]; total_inimigos = vivos; // ---- NOVA HORDA ---- for (int i = 0; i < novos_inimigos; i++) v[total_inimigos + i] = rand() % 10000 + 1; total_inimigos += novos_inimigos; qsort(v, total_inimigos, sizeof(int), cmp); print_vetor(v, total_inimigos); } printf("%d\n", total_inimigos); free(v); return 0; }