eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Анти - QuickSort

Анти - QuickSort

Для сортировки последовательности чисел широко используется быстрая сортировка – QSort. Ниже приведена программа, которая сортирует массив a, используя данный алгоритм.

var a : array [1..N] of integer;
procedure QSort(left, right : integer);

var m, i, j, t : integer;

begin
    m := a[(left+right) div 2];
    i := left;
    j := right;

    repeat
        while a[i] < m do inc(i);
            while a[j] > m do dec(j);
                if i <= j then
                begin
                    t := a[i]; a[i] := a[j]; a[j] := t;
                    inc(i); dec(j);
                end;
    until i > j;

    if j > left then QSort(left, j);
    if i < right then QSort(i, right);
end;

begin
    QSort(1, N);
end.

Хотя QSort является самой быстрой сортировкой в среднем, существуют тесты, на которых она работает очень долго. Будем оценивать время работы алгоритма количеством сравнений, сделанных с элементами массива (т.е. суммарным количеством сравнений в первом и втором while). Требуется написать программу, генерирующую тест, на котором быстрая сортировка сделает наибольшее число таких сравнений.

Входные данные

В первой строке находится единственное число N (1 ≤ N ≤ 70000).

Выходные данные

Вывести перестановку чисел от 1 до N, на которой быстрая сортировка выполнит максимальное число сравнений. Если таких перестановок несколько, вывести любую из них.

Лимит времени 1 секунда
Лимит использования памяти 64 MiB
Входные данные #1
1
Выходные данные #1
X