2108 - 통계학

solution

code

#include <iostream>
#include <queue>
#include <cmath>
using namespace std;

int main()
{
    int N;
    cin >> N;
    int * data = new int[N];
    int sum = 0;
    int max = -4001;
    int min = 4001;
    priority_queue<int, vector<int>, greater<int>> pq;
    int arr[8001] = {0, };
    for(int i = 0; i < N; i++)
    {
        scanf("%d", &data[i]);
        sum += data[i];
        pq.push(data[i]);
        arr[data[i]+4000]++;
        max = (data[i] > max) ? data[i] : max;
        min = (data[i] < min) ? data[i] : min;
    }

    double mean = floor(((double)sum / (double)N) + 0.5);
    cout << (int)mean << endl;

    for(int i = 0; i < N/2; i++) pq.pop();
    cout << pq.top() << endl;

    priority_queue<int> pq2;
    for(int i = 0; i < 8001; i++)
        pq2.push(arr[i]);
    if(pq2.top() == 0) pq2.pop();
    int fv = pq2.top();
    pq2.pop();
    if(pq2.top() == fv)
    {
        priority_queue<int, vector<int>, greater<int>> pq3;
        for(int i = 0; i < 8001; i++)
        {
            if(arr[i] == fv)
                pq3.push(i);
        }
        pq3.pop();
        cout << pq3.top() - 4000 << endl;
    }
    else
    {
        int idx;
        for(int i = 0; i < 8001; i++)
            if(arr[i] == fv)
                idx = i;
        cout << idx - 4000 << endl;
    }

    cout << max - min << endl;

    return 0;
}

ref

2108번: 통계학