fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. //必要があれば,関数をいくつでも追加して良い
  5.  
  6.  
  7.  
  8. void swap(int *a, int *b){
  9. int tmp;
  10. tmp = *a;
  11. *a = *b;
  12. *b = tmp;
  13. }
  14.  
  15. //最大値を返す関数
  16. int getMax(int a[], int n){
  17. int i,ret=0;
  18. for(i=1;i<n;i++){
  19. if(a[ret]<a[i]) ret = i;
  20. }
  21. return ret;
  22. }
  23. int solve(){
  24.  
  25. //ここにプログラムを書く
  26. //ret に答えを入れてメイン関数に返す
  27. //入力を受ける部分も自分で書いてください
  28. //今日の分を含め過去の授業のプログラムが
  29. //参考になるはずです
  30. //初期化や入力
  31. int ret = 0;
  32. int n,q,i,x;
  33. int *d;
  34. scanf("%d %d",&n,&q);
  35. d = (int*)malloc(sizeof(int)*n);
  36. if(d==NULL){
  37. printf("ERROR\n");
  38. return -1;
  39. }
  40. for(i=0;i<n;i++){
  41. scanf("%d",&d[i]);
  42. }
  43.  
  44. for(i=0;i<q;i++){
  45. x = getMax(d,n);
  46. d[x] /= 2; //d[n-1] = d[n-1]/2; 2割ってく
  47. }
  48. for(i=0;i<n;i++){
  49. ret += d[i];//retは0でそこに割る2されたモンスターの総和が入る
  50. }
  51. free(d);
  52. return ret;
  53. }
  54.  
  55. //メイン関数はいじらなくて良い
  56. int main(void){
  57. printf("%d\n",solve());
  58. return 0;
  59. }
Success #stdin #stdout 0.01s 5456KB
stdin
7 2
10 40 60 30 80 5 30
stdout
185