fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define MAXN 100
  5.  
  6. // 降順にソートするための比較関数
  7. int compare(const void *a, const void *b) {
  8. return *(int *)b - *(int *)a;
  9. }
  10.  
  11. // 問題のロジックを解く関数
  12. int solve() {
  13. int n, q;
  14. int d[MAXN];
  15.  
  16. // 入力: モンスターの数 n、魔法のボールの数 q
  17. scanf("%d %d", &n, &q);
  18.  
  19. // 入力: 各モンスターの防御力
  20. for (int i = 0; i < n; ++i) {
  21. scanf("%d", &d[i]);
  22. }
  23.  
  24. // 魔法のボールを q 回使用
  25. for (int i = 0; i < q; ++i) {
  26. // 防御力を降順に並び替えて最大のモンスターにボールを当てる
  27. qsort(d, n, sizeof(int), compare);
  28. d[0] /= 2; // 最大値を半分に(小数点以下切り捨て)
  29. }
  30.  
  31. // 最終的な防御力の合計を計算
  32. int sum = 0;
  33. for (int i = 0; i < n; ++i) {
  34. sum += d[i];
  35. }
  36.  
  37. return sum;
  38. }
  39.  
  40. // メイン関数(いじらなくて良い)
  41. int main(void) {
  42. printf("%d\n", solve());
  43. return 0;
  44. }
  45.  
Success #stdin #stdout 0s 5324KB
stdin
7 2
10 40 60 30 80 5 30
stdout
185