13073. Мега-інверсії


Відправити розв'язок

Бали: 100
Time limit: 2.0s
Memory limit: 500M

Authors:
Problem type
Allowed languages
C++, Java, Pascal, Python

Інверсією в перестановці \(p_1, p_2, ..., p_N\) називається пара \((i, j)\) така, що \(i < j\) і \(p_i > p_j\).

Назвемо мега-інверсією в перестановці \(p_1, p_2, ..., p_N\) трійку \((i, j, k)\) таку, що \(i < j < k\) і \(p_i > p_j > p_k\).

Придумайте алгоритм швидкого підрахунку кількості мега-інверсій у перестановці.

Формат вхідних даних

Перший рядок вхідного файлу містить ціле число \(N\) \((1 \le N \le 100\,000)\).

Наступні \(N\) чисел описують перестановку: \(p_1, p_2, ..., p_N\) \((1 \le p_i \le N\)), всі \(p_i\) попарно різні.

Числа розділяються пробілами та/або перекладами рядків.

Формат вихідних даних

Єдиний рядок вихідного файлу повинен містити одне число, яке дорівнює кількості мега-інверсій у перестановці \(p_1, p_2, ..., p_N\).

Приклад вхідних даних

4
4 3 2 1

Приклад вихідних даних

4

Коментарі

Ще немає коментарів.