Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 

Кислотные дожди

(Время: 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.TXTOUTPUT.TXT
18
9 1 8 1 5 2 3 6
3 3 1 3 3 2 1
0
4
0
0
0
13
20

Для отправки решения задачи необходимо зарегистрироваться и авторизоваться!

[Обсуждение] [Все попытки] [Лучшие попытки]


 Язык программирования C++
 Решение олимпиадных задач
 Региональные олимпиады
 Книги Фёдора Меньшикова
 ЕГЭ по информатике
 Тренировочные олимпиады
 Школьный этап
 Муниципальный этап
 Региональный этап
 Полуфинал ВКОШП
 Личное первенство СФУ
 2006 / 2007
 2007 / 2008
 2008 / 2009
 2009 / 2010
 2010 / 2011
 2011 / 2012
 2012 / 2013
 2013 / 2014
 2014 / 2015
 2015 / 2016
 2016 / 2017
 2017 / 2018
 2018 / 2019
 2019 / 2020
 2020 / 2021
 2021 / 2022
 2022 / 2023
 2023 / 2024
 2024 / 2025
 A. Кузнечик 2D
 B. Простоватые числа
 C. Кислотные дожди
 D. Поиск сокровищ
 E. Разность квадратов
 F. Перекошенное разбиение
 G. Главное правило личных олимпиад
 H. Туристический маршрут

Красноярский краевой Дворец пионеров, (c)2006 - 2025, ИНН 246305493507, E-mail: admin@acmp.ru