Дана последовательность целых 32 битных
знаковых чисел. Вам поручается отсортировать эту последовательность и удалить
из нее все повторения элементов, т. е. необходимо удалить все кроме одной копии
чисел в последовательности.
Вход. В первой строке находится количество чисел в
последовательности n (1 ≤ n ≤ 65536). Следующие
n строк содержат n целых чисел (по одному числу в строке).
Выход. Вывести
не более n чисел, отсортированных в порядке убывания при четном n, и в порядке возрастания
при нечетном n. Каждое число должно встречаться не более одного раза.
Пример входа |
Пример выхода |
6 8 8 7 3 7 7 |
8 7 3 |
сортировка
Анализ алгоритма
Отсортируем
числа в массиве в зависимости от четности n. Повторяющиеся
числа удалим при помощи функции unique.
Реализация алгоритма
Объявим массив для хранения чисел.
vector<int> v;
Читаем входные данные.
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%d", &a);
v.push_back(a);
}
В зависимости от четности n сортируем
числа.
if (n % 2 == 1)
sort(v.begin(), v.end());
else
sort(v.begin(), v.end(), greater<int>());
Удаляем повторяющиеся числа.
v.erase(unique(v.begin(), v.end()), v.end());
Выводим результирующий массив.
for (i = 0; i < v.size(); i++)
printf("%d\n", v[i]);