Введем функцию $$$f$$$ следующим образом. Эта функция принимает массив $$$a$$$ длины $$$n$$$ и возвращает массив. Изначально результат — пустой массив. Для каждого $$$i$$$ от $$$1$$$ до $$$n$$$ мы добавляем $$$a_i$$$ в конец результата, если этот элемент больше всех предыдущих (формально, если $$$a_i > \max\limits_{1 \le j < i}a_j$$$). Примеры применения функции $$$f$$$:
Вам даны два массива: $$$a_1, a_2, \dots , a_n$$$ и $$$b_1, b_2, \dots , b_m$$$. Вы можете удалить некоторые элементы массива $$$a$$$ (возможно, никакие). Чтобы удалить элемент $$$a_i$$$, вы должны заплатить $$$p_i$$$ монет (значение $$$p_i$$$ может быть отрицательным, тогда за удаление элемента вы получаете $$$|p_i|$$$ монет). Посчитайте минимальное кол-во монет (возможно, отрицательное), которое вы должны потратить, чтобы условие $$$f(a) = b$$$ выполнялось.
В первой строке задано одно целое число $$$n$$$ $$$(1 \le n \le 5 \cdot 10^5)$$$ — длина массива $$$a$$$.
Во второй строке заданы $$$n$$$ целых чисел $$$a_1, a_2, \dots, a_n$$$ $$$(1 \le a_i \le n)$$$ — массив $$$a$$$.
В третьей строке заданы $$$n$$$ целых чисел $$$p_1, p_2, \dots, p_n$$$ $$$(|p_i| \le 10^9)$$$ — массив $$$p$$$.
В четвертой строке задано целое число $$$m$$$ $$$(1 \le m \le n)$$$ — длина массива $$$b$$$.
В пятой строке заданы $$$m$$$ целых чисел $$$b_1, b_2, \dots, b_m$$$ $$$(1 \le b_i \le n, b_{i-1} < b_i)$$$ — массив $$$b$$$.
Если ответ существует, выведите YES в первой строке, а во второй — минимальное количество монет, которое надо потратить, чтобы условие $$$f(a) = b$$$ выполнилось.
Иначе выведите NO.
11 4 1 3 3 7 8 7 9 10 7 11 3 5 0 -2 5 3 6 7 8 2 4 3 3 7 10
YES 20
6 2 1 5 3 6 5 3 -9 0 16 22 -14 4 2 3 5 6
NO
Название |
---|