fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. // 課題1 モンスターの防御力を減らせ! の解答
  5. int solve() {
  6. int n, q;
  7. int d[100]; // モンスターの防御力を格納する配列(n<=100のため)
  8. int i, j, max_idx;
  9. int sum = 0;
  10.  
  11. // 入力: モンスターの数 n と ボールの数 q を読み込む
  12. if (scanf("%d %d", &n, &q) != 2) return 0;
  13.  
  14. // 入力: 各モンスターの防御力 d_i を読み込む
  15. for (i = 0; i < n; i++) {
  16. scanf("%d", &d[i]);
  17. }
  18.  
  19. // q 個のボールを順番にぶつける
  20. for (j = 0; j < q; j++) {
  21. max_idx = 0;
  22. // 現在の防御力が最大のモンスターを探す
  23. for (i = 1; i < n; i++) {
  24. if (d[i] > d[max_idx]) {
  25. max_idx = i;
  26. }
  27. }
  28. // 最も防御力が高いモンスターの防御力を半分にする
  29. // (C言語の整数同士の割り算は、自動的に小数点以下が切り捨てられます)
  30. d[max_idx] = d[max_idx] / 2;
  31. }
  32.  
  33. // 最終的な防御力の合計を計算する
  34. for (i = 0; i < n; i++) {
  35. sum += d[i];
  36. }
  37.  
  38. return sum;
  39. }
  40.  
  41. int main(void) {
  42. printf("%d\n", solve());
  43. return 0;
  44. }
Success #stdin #stdout 0s 5312KB
stdin
Standard input is empty
stdout
0