fork(1) download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int getMax(int a[], int size) {
  4. int x = 0;
  5. for (int i = 1; i < size; i++) {
  6. if (a[x] < a[i]) {
  7. x = i;
  8. }
  9. }
  10. return x;
  11. }
  12.  
  13. int solve() {
  14. int ret = 0;
  15. int n, q;
  16.  
  17. // 入力
  18. scanf("%d %d", &n, &q);
  19.  
  20. int *d = (int *)malloc(n * sizeof(int));
  21. if (d == NULL) {
  22. printf("ERROR\n");
  23. return -1;
  24. }
  25.  
  26. for (int i = 0; i < n; i++) {
  27. scanf("%d", &d[i]);
  28. }
  29.  
  30. // q回、防御力最大のモンスターにボールを投げて半減させる
  31. for (int i = 0; i < q; i++) {
  32. int maxIdx = getMax(d, n);
  33. d[maxIdx] /= 2;
  34. }
  35.  
  36. // 総和を計算
  37. for (int i = 0; i < n; i++) {
  38. ret += d[i];
  39. }
  40.  
  41. free(d);
  42. return ret;
  43. }
  44.  
  45. int main(void) {
  46. printf("%d\n", solve());
  47. return 0;
  48. }
Success #stdin #stdout 0s 5324KB
stdin
7 2
10 40 60 30 80 5 30

stdout
185