Вопросы к Поиску с Алисой
Для подсчёта количества инверсий в последовательности за линейное время можно использовать карманную сортировку. neerc.ifmo.ru Для этого нужно определить карман, в который попадёт текущий элемент, затем найти число элементов в старших карманах относительно этого кармана и аккуратно подсчитать количество элементов, больших текущего в этом кармане. neerc.ifmo.ru
Также для решения задачи за время O(nlogn) можно применить алгоритм «разделяй и властвуй». education.yandex.ru Для этого нужно разделить вводный массив на две половины и сделать рекурсивный вызов обоих из них. education.yandex.ru Если обе части уже отсортированы, количество инверсий из элементов разных половин можно вычислить за время O(n). education.yandex.ru
Ещё один алгоритм, который работает за время O(nlogn), можно построить с помощью дерева отрезков. neerc.ifmo.ru