fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. //必要があれば,関数をいくつでも追加して良い
  5. int compare(const void *a, const void *b) {
  6. return *(int *)b - *(int *)a; // 降順にソート
  7. }
  8.  
  9. int solve(){
  10. int ret;
  11. int n, q;
  12. scanf("%d %d", &n, &q);
  13.  
  14. int d[n];
  15.  
  16. // 防御力の入力
  17. for (int i = 0; i < n; i++) {
  18. scanf("%d", &d[i]);
  19. }
  20.  
  21. // 防御力を最大ヒープ(降順)でソート
  22. qsort(d, n, sizeof(int), compare);
  23.  
  24. // 魔法ボールをq個使う
  25. for (int i = 0; i < q; i++) {
  26. // 最も防御力が高いモンスターを半分にする
  27. d[0] = d[0] / 2;
  28.  
  29. // ソートして最大値を再調整
  30. qsort(d, n, sizeof(int), compare);
  31. }
  32.  
  33. // 最終的な防御力の合計を計算
  34. ret = 0; // 初期化
  35. for (int i = 0; i < n; i++) {
  36. ret += d[i];
  37. }
  38.  
  39. return ret;
  40. }
  41.  
  42. //メイン関数はいじらなくて良い
  43. int main(void){
  44. printf("%d\n",solve());
  45. return 0;
  46. }
  47.  
Success #stdin #stdout 0.01s 5288KB
stdin
7 2

10 40 60 30 80 5 30
stdout
185