|
Кислотные дожди
(Время: 3 сек. Память: 256 Мб Сложность: 63%)
Для сборки лаборатории-поселения на Венеру доставлены n блоков. Блоки расположены в ряд, i-й блок имеет высоту hi.
Сборку будет осуществлять специальный робот. В процессе сборки последовательные сегменты блоков будут постепенно объединяться. При этом порядок блоков в ряду не будет меняться.
Исходно каждый блок представляет собой отдельный сегмент, сегменты пронумерованы от 1 до n в том же порядке, что и блоки. Если есть два соседних сегмента, составленных из блоков: сегмент из блоков A = [i, i+1, ... , i+p−1] и сегмент из блоков B = [i+p, i+p+1, ... ,i+p+q−1], то после их объединения в один получается сегмент AB = [i, i+1, ... , i+p−1, i+p, i+p+1, ..., i+p+q−1].
Инструкция по сборке состоит из n−1 инструкций. Каждая инструкция характеризуется одним
числом, j-я инструкция характеризуется числом kj. После выполнения этой инструкции сегменты с
номерами kj и kj+1 объединяются в один, получившийся сегмент занимает место в последовательности сегментов на месте двух объединенных сегментов, и вводится новая нумерация на сегментах в том порядке, в котором они расположены – номера сегментов, начиная с kj+2, уменьшаются на один. После выполнения всех инструкций все сегменты окажутся объединены в один общий сегмент.
На Венере постоянно идут кислотные дожди, поэтому в процессе сборки важно для каждого сегмента блоков понимать, сколько жидкости может скопиться в этом сегменте. Пусть сегмент состоит из блоков высотой hl, hl+1, ..., hr. Для p, где l ≤ p ≤ r определим глубину блока c высотой hp в этом сегменте следующим образом. Посчитаем величины lp = max{hl, ..., hp}, rp = max{hp, ..., hr}. Это
самые высокие блоки в сегменте слева и справа от p-го. Тогда глубина блока p в его сегменте равна dp = min(lp, rp)−hp, заметим, что dp > 0. Емкостью сегмента будем называть сумму глубин блоков этого сегмента, то есть w = dl + dl+1 + ... + dr.
Задана последовательность объединений сегментов. После каждого объединения выведите емкость получившегося сегмента.
На рисунке ниже продемонстрирован процесс выполнения инструкции из примера, над каждым блоком указана его глубина, а для нового сегмента показана его емкость.
Входные данные
Первая строка входного файла INPUT.TXT содержит одно целое число n – количество блоков (2 ≤ n ≤ 105).
Во второй строке записано n чисел h1, ... , hn (1 ≤ hi ≤ 109).
В третьей строке записаны n − 1 чисел – инструкции по объединению сегментов. Каждая инструкция характеризуется одним числом kj (1 ≤ kj ≤ n − j).
Выходные данные
В выходной файл OUTPUT.TXT выведите n−1 чисел – после каждого объединения сегментов выведите емкость получившегося
объединенного сегмента.
Пример
№ | INPUT.TXT | OUTPUT.TXT |
1 | 8 9 1 8 1 5 2 3 6 3 3 1 3 3 2 1 | 0
4
0
0
0
13
20 |
Для отправки решения задачи необходимо зарегистрироваться и авторизоваться!
| |