fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. // 最大の防御力を持つモンスターのインデックスを探す関数
  5. int findMaxIndex(int d[], int n) {
  6. int maxIndex = 0;
  7.  
  8. for (int j = 1; j < n; j++) {
  9. if (d[j] > d[maxIndex]) {
  10. maxIndex = j;
  11. }
  12. }
  13. return maxIndex;
  14. }
  15.  
  16. // プログラムのメインロジック
  17. int solve() {
  18. int ret = 0;
  19. int n, q;
  20. scanf("%d", &n); // モンスターの数
  21.  
  22. int *d = malloc(n * sizeof(int));
  23.  
  24. for (int i = 0; i < n; i++) {
  25. scanf("%d", &d[i]);
  26. } // モンスターの数だけ防御力を設定
  27.  
  28. scanf("%d", &q); // 魔法ボールの数を設定
  29.  
  30. for (int k = 0; k < q; k++) {
  31. int maxIndex = findMaxIndex(d, n); // 最大の防御力を持つモンスターのインデックスを探す
  32. d[maxIndex] /= 2; // 最大の防御力を持つモンスターにボールを当てて、防御力を半分にする
  33. }
  34.  
  35. // 最終的な答えを計算
  36. for (int l = 0; l < n; l++) {
  37. ret = ret + d[l];
  38. }
  39.  
  40. free(d);
  41. return ret;
  42. }
  43.  
  44. // メイン関数
  45. int main(void) {
  46. printf("%d\n", solve());
  47. return 0;
  48. }
  49.  
Success #stdin #stdout 0s 5308KB
stdin
7 2
10 40 60 30 80 5 30
stdout
3