题目:https://pintia.cn/problem-sets/994805260223102976/problems/994805262303477760

vs2010里面没有round函数,需要自己写

  1. double round(double r)
  2. {
  3. return (r > 0.0) ? floor(r + 0.5) : ceil(r - 0.5);
  4. }
  5. //rount(-2.1) = -2, round(-2.6) = -3

代码

  1. #include<cstdio>
  2. #include<iostream>
  3. #include<cmath>
  4. #include<vector>
  5. #include<algorithm>
  6. using namespace std;
  7. double round(double r)
  8. {
  9. return (r > 0.0) ? floor(r + 0.5) : ceil(r - 0.5);
  10. }
  11. int main(){
  12. int n, m;
  13. scanf("%d%d", &n, &m);
  14. int g1, g2;
  15. int temp;
  16. for(int i = 0; i < n; i++){
  17. vector<int> newvec;
  18. scanf("%d", &g2);
  19. for(int j = 0; j < n - 1; j++){
  20. scanf("%d", &temp);
  21. if(temp >= 0 && temp <= m){
  22. newvec.push_back(temp);
  23. }
  24. }
  25. sort(newvec.begin(), newvec.end());
  26. newvec.erase(newvec.begin());
  27. reverse(newvec.begin(), newvec.end());
  28. newvec.erase(newvec.begin());
  29. int sum = 0, count = 0;
  30. for(int j = 0; j < newvec.size(); j++){
  31. sum += newvec[j];
  32. count++;
  33. }
  34. g1 = sum / count;
  35. printf("%d\n", (int) round((g1 + g2)*1.0/2));
  36. }
  37. return 0;
  38. }