Матч
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;
}
};