fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int solve() {
  5. int n, q;
  6. scanf("%d %d", &n, &q); // モンスター数 n, 魔法玉数 q
  7.  
  8. int *defense = (int *)malloc(n * sizeof(int));
  9. for (int i = 0; i < n; i++) {
  10. scanf("%d", &defense[i]); // 各モンスターの防御力
  11. }
  12.  
  13. // 魔法玉を使う
  14. for (int i = 0; i < q; i++) {
  15. // 最大値を探す
  16. int maxIndex = 0;
  17. for (int j = 1; j < n; j++) {
  18. if (defense[j] > defense[maxIndex]) {
  19. maxIndex = j;
  20. }
  21. }
  22.  
  23. // 最大値を1/2にする
  24. defense[maxIndex] /= 2;
  25. }
  26.  
  27. // 総防御力を計算
  28. int totalDefense = 0;
  29. for (int i = 0; i < n; i++) {
  30. totalDefense += defense[i];
  31. }
  32.  
  33. free(defense);
  34. return totalDefense;
  35. }
  36.  
  37. int main(void) {
  38. printf("%d\n", solve());
  39. return 0;
  40. }
  41.  
Success #stdin #stdout 0s 5284KB
stdin
7 2
10 40 60 30 80 5 30
stdout
185