Матч 308, Медиана чисел (MedianOfNumbers)

Дивизион 2, Уровень 1

 

Медианой набора различных чисел называется такое число m, что количество чисел, больших m, равно количеству чисел, меньших m. Например, медианой множества {1, 4, 2, 5, 7} будет 4, так как существует два числа, больших 4 (числа 5 и 7), и два числа, меньших 4 (1 и 2).

 

Класс: MedianOfNumbers

Метод: int findMedian(vector<int> numbers)

Ограничения: numbers содержит от 1 до 50 элементов, 1 £ numbers[i] £ 100.

 

Вход. Массив различных чисел numbers.

 

Выход. Медиана входного набора чисел. Если медианы не существует, вывести -1.

 

Пример входа

numbers

{1, 4, 2, 5, 7}

{1, 5, 8, 3}

{7}

{32, 54, 27, 4, 69, 96, 73, 1, 100, 15, 21}

 

Пример выхода

4

-1

7

32

 

 

РЕШЕНИЕ

сортировка

 

Отсортируем числа в массиве. Если массив содержит четное количество чисел, то медианы не существует. Иначе медианой будет средний элемент отсортированного массива.

 

ПРОГРАММА

 

#include <cstdio>

#include <vector>

#include <algorithm>

using namespace std;

 

class MedianOfNumbers

{

public:

  int findMedian(vector<int> numbers)

  {

    int size = numbers.size();

    sort(numbers.begin(),numbers.end());

    return size % 2 ? numbers[size/2] : -1;

  }

};