Олимпиадный тренинг

Задача . F. Джонни и новая игрушка


У Джонни новая игрушка. Как вы можете догадаться, она немного необычная. Игрушка является перестановкой \(P\) чисел от \(1\) до \(n\), записанных в строку друг за другом.

Для каждого \(i\) от \(1\) до \(n - 1\), между \(P_i\) и \(P_{i + 1}\) написан вес \(W_i\), и эти веса также образуют перестановку чисел от \(1\) до \(n - 1\). Дополнительно есть веса \(W_0 = W_n = 0\).

Инструкция гласит, что отрезок \([L, R]\) является хорошим, если \(W_{L - 1} < W_i\) и \(W_R < W_i\) для всех \(i\) из \(\{L, L + 1, \ldots, R - 1\}\). Для такого отрезка она также определяет \(W_M\) как минимум из множества \(\{W_L, W_{L + 1}, \ldots, W_{R - 1}\}\).

Теперь начинается веселье. За один ход, игрок может выбрать один из хороших подотрезков, разрезать на \([L, M]\) и \([M + 1, R]\) и поменять местами эти части. Более точно, до операции выбранный подотрезок игрушки выглядел следующим образом: \(\)W_{L - 1}, P_L, W_L, \ldots, W_{M - 1}, P_M, W_M, P_{M + 1}, W_{M + 1}, \ldots, W_{R - 1}, P_R, W_R\(\) А после, он стал выглядеть так: \(\)W_{L - 1}, P_{M + 1}, W_{M + 1}, \ldots, W_{R - 1}, P_R, W_M, P_L, W_L, \ldots, W_{M - 1}, P_M, W_R\(\)

Такая операция может быть выполнена несколько раз (возможно, ноль), и целью является получить минимальное возможное количество инверсий в \(P\).

Младшая сестра Джонни, Меган, считает, что правила слишком запутанные, поэтому она хочет проверить своего брата, выбирая некоторые пары индексов \(X\) и \(Y\), и меняя местами \(P_X\) и \(P_Y\) (\(X\) может быть равно \(Y\)). После каждого действия сестры, Джонни интересуется, какого минимального количества инверсий можно достичь, начиная с текущего \(P\) и делая корректные действия?

Вы можете считать, что входные данные были сгенерированы случайно. \(P\) и \(W\) были выбраны случайно и равновероятно среди всех перестановок, а запросы Меган были выбраны случайно и равновероятно среди всех пар индексов.

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

Первая строка содержит одно целое число \(n\) \((2 \leq n \leq 2 \cdot 10^5)\), обозначающее длину игрушки.

Вторая строка содержит \(n\) различных целых чисел \(P_1, P_2, \ldots, P_n\) \((1 \leq P_i \leq n)\), обозначающих исходную перестановку \(P\). Третья строка содержит \(n - 1\) различных целых чисел \(W_1, W_2, \ldots, W_{n - 1}\) \((1 \leq W_i \leq n - 1)\), обозначающих веса.

Четвертая строка содержит одно целое число \(q\) \((1 \leq q \leq 5 \cdot 10^4)\) — количество действий Меган. Следующие \(q\) строк содержат по два целых числа \(X\) и \(Y\) \((1 \leq X, Y \leq n)\) — индексы элементов \(P\), меняющихся местами. Запросы не независимы, после каждого из них перестановка меняется.

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

Выведите \(q\) строк. Строка номер \(i\) должна содержать одно целое число — минимальное количество инверсий в перестановке, которое может быть получено, если начинать с \(P\) после первых \(i\) запросов и выполнять операции, описанные в инструкции.

Примечание

Рассмотрим первый пример. После первого запроса, \(P\) отсортирована, поэтому мы уже получили перестановку без инверсий.

После второго запроса, \(P\) равна [\(1\), \(3\), \(2\)], в ней есть одна инверсия, и можно доказать, что получить \(0\) инверсий невозможно.

В конце, \(P\) равна [\(2\), \(3\), \(1\)]. Мы можем выбрать всю перестановку в качестве хорошего подотрезка, после чего \(P\) станет равным [\(1\), \(2\), \(3\)], в котором \(0\) инверсий.


Примеры
Входные данныеВыходные данные
1 3
3 2 1
2 1
3
1 3
3 2
3 1
0
1
0
2 5
4 3 2 5 1
3 2 1 4
7
5 4
5 2
1 5
2 4
2 4
4 3
3 3
3
1
2
1
2
3
3

time 15000 ms
memory 1024 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя