#136Средне
Сортировка по остатку
Время: 1 s · Память: 256 MB
- Сортировка
Условие
Даны целых чисел и число . Отсортируйте числа по правилам:
- Сначала по возрастанию остатка . Остаток берётся со знаком числа (как
%в C++): например, , . - При равных остатках нечётное число стоит раньше чётного.
- Если оба нечётные — раньше большее; если оба чётные — раньше меньшее.
Формат ввода
В первой строке и (, ). Во второй — целых чисел ().
Формат вывода
В одной строке чисел — отсортированный массив.
Примеры
Ввод
10 3 1 2 3 4 5 6 7 8 9 10
Вывод
9 3 6 7 1 4 10 5 2 8
Ввод
7 3 -7 7 -4 4 0 -3 3
Вывод
-7 -4 3 -3 0 7 4
Примечание
Три правила записываются одним компаратором: если остатки различны — по остатку, если различна чётность — нечётное раньше, иначе нечётные по убыванию, чётные по возрастанию. Отрицательное число тоже может быть нечётным: нечётно.
В Python -7 % 3 даёт 2 — это не тот остаток. Остаток со знаком получите через math.fmod или -(abs(a) % M). Во втором примере остатки: , , , , , , ; ответ -7 -4 3 -3 0 7 4.
Источник: UVa 11321.
