ГлавнаяСборникиТурнирыРазделыФорумыУчастникиПечатьПомощьО системе

Разделы > 115. Задачи на структуры данных > задача:


Макс и начисление зарплаты

Задачи раздела

• Макс и вставка букв
• Макс и начисление зарплаты

Обратная связь

Если у вас есть предложения или пожелания по работе Contester, посетите форум сайта www.contester.ru.

Лимит времени 2000/2000/2000/2000 мс. Лимит памяти 65536/65536/65536/65536 Кб.

Макс и начисление зарплаты
Макс и начисление зарплаты
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
64 мегабайта
ввод
стандартный ввод
вывод
стандартный вывод

На этот раз Макса попросил о помощи бухгалтерский отдел одной крупной организации.

В организации работают $$$N$$$ сотрудников, пронумерованных от 1 до $$$N$$$. У каждого сотрудника, за исключением директора организации, есть ровно один непосредственный начальник.

Сотрудник $$$a$$$ является подчинённым сотрудника $$$b$$$, если справедливо одно из двух:

  • Либо сотрудник $$$b$$$ является непосредственным начальником сотрудника $$$a$$$;
  • Либо непосредственный начальник сотрудника $$$a$$$ является подчинённым сотрудника $$$b$$$.

Изначально зарплата $$$i$$$-го сотрудника составляет $$$S_i$$$ рублей.

Бухгалтерам организации часто приходится подсчитывать общий расход средств на оплату труда, а также вносить изменения в структуру начальников и подчинённых. Поэтому Макса попросили разработать приложение, которое помогло бы автоматизировать действия бухгалтерии. Это приложение должно обрабатывать следующие виды запросов:

  • $$$1$$$ $$$X$$$ — определить общую сумму зарплат сотрудника $$$X$$$ и всех его подчинённых;
  • $$$2$$$ $$$X$$$ $$$D$$$ — повысить зарплату сотрудника $$$X$$$ на $$$D$$$ рублей;
  • $$$3$$$ $$$X$$$ — повысить в должности сотрудника $$$X$$$. При этом ничьи зарплаты не изменяются, но $$$X$$$ меняется местами в иерархии сотрудников со своим непосредственным начальником (если $$$X$$$ является директором организации, то никаких изменений не происходит).

Помогите Максу эффективно обработать все запросы.

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

Первая строка содержит целое число $$$N$$$ ($$$2 \le N \le 2 \cdot 10^5$$$) — количество сотрудников организации.

Вторая строка содержит $$$N$$$ целых чисел $$$P_i$$$ ($$$0 \le P_i \le N$$$) — номера непосредственных начальников для каждого из сотрудников. Для директора организации $$$P_i = 0$$$.

Третья строка содержит $$$N$$$ целых чисел $$$S_i$$$ ($$$1 \le S_i \le 10^9$$$) — начальный размер зарплаты для каждого из сотрудников.

Четвёртая строка содержит целое число $$$Q$$$ ($$$1 \le Q \le 2 \cdot 10^5$$$) — количество запросов.

Следующие $$$Q$$$ строк описывают запросы. Каждая из них содержит целые числа $$$T_i$$$ и $$$X_i$$$ ($$$1 \le T_i \le 3$$$, $$$1 \le X_i \le N$$$) — соответственно тип запроса и номер сотрудника. Если $$$T_i = 2$$$, то далее следует целое число $$$D_i$$$ ($$$1 \le D_i \le 10^9$$$) — размер прибавки к зарплате.

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

Для каждого запроса первого типа выведите одно целое число — суммарный размер зарплат, которые нужно будет выплатить сотруднику $$$X_i$$$ и всем его подчинённым.

Примеры

Входные данные
5
0 1 2 3 4
1 1 1 1 1
5
1 2
2 3 5
3 3
1 3
1 1
Выходные данные
4
9
10
Входные данные
5
2 0 2 2 3
3 5 4 2 1
8
1 1
1 2
3 5
2 5 4
2 3 2
1 3
1 5
1 2
Выходные данные
3
15
6
11
21

Для отправки решений необходимо выполнить вход.

www.contester.ru