fork download
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5.  
  6. int main(void)
  7. {
  8. int arr[8002] = { 0, };
  9. int n, mid, input, hight = 0, alway;
  10. double avg = 0;
  11.  
  12. cin >> n; //n: 데이터 입력 횟수
  13.  
  14. for (int i = 0; i < n; i++)
  15. {
  16. cin >> input; //input: 데이터 입력값
  17. arr[4000 + input]++; //카운팅 정렬 실행
  18.  
  19. avg += input; //avg: 평균값
  20.  
  21. if (hight < arr[4000 + input]) //입력 중 최대 빈도 확인
  22. {
  23. hight = arr[4000 + input]; //hight: 빈도의 최댓값
  24. alway = input; //alway: 최대의 빈도를 차지하는 수
  25. }
  26. }
  27. int min, max; //max: 최댓값, min: 최솟값
  28. min = max = input;
  29.  
  30. bool flag = false; //mid값을 초기화를 했는지 확인 용도
  31. int cnt = 0; //최대의 빈도를 가진 수의 갯수 확인 용도
  32. int sum = 0; //입력된 횟수 확인 용도
  33.  
  34. for (int i = 0; i < 8002; i++)
  35. {
  36. int value = i - 4000;
  37. if (arr[i] > 0)
  38. {
  39. sum += arr[i];
  40. if (sum >= n / 2 + 1 && !flag)
  41. {
  42. mid = value;
  43. flag = true;
  44. }
  45. if (min > value) min = value;
  46. if (max < value) max = value;
  47.  
  48. if (arr[i] == hight) cnt++;
  49. if (cnt == 2) //두 번째로 작은 수만
  50. {
  51. cnt = 3;
  52. alway = value;
  53. }
  54. }
  55. }
  56.  
  57. cout << round(avg / n) << "\n" << mid << "\n" << alway << "\n" << max - min;
  58. return 0;
  59. }
Success #stdin #stdout 0s 4912KB
stdin
5
1
3
8
-2
2
stdout
2
2
1
10