SP32857 HRSIAM - Angry Siam
题目描述
你有一个包含 $N$ 个问题的数组 $\bm{A}$。每个问题都有一个难度,第 $i$ 个问题的难度值为 $A[i]$。
你计划把这些问题交给 HrSiam,但你知道 HrSiam 不喜欢简单的问题,他容易因此生气。此外,他也不愿意反复解决相同难度的问题。
HrSiam 有一个数组 $\bf{angry}$,长度为 $N$。
当他遇到某个难度为 $d$ 的问题时,他的愤怒值会增加 $d \times \text{angry}[1]$。如果他第二次遇到同样难度的问题,愤怒值会增加 $d \times \text{angry}[2]$,依此类推。即,第 $i$ 次遇到相同难度为 $d$ 的问题时,他的愤怒值会增加 $d \times \text{angry}[i]$。
基于这种情况,你需要完成以下两项任务:
1. 为了避免 HrSiam 过于生气,你可能只想给他看一部分问题。你需要快速计算如果给他看子数组 $A[l \dots r]$,他的总愤怒值是多少。
2. 随着时间的推移,你可能想要修改某个问题的难度,即把第 $x$ 个问题的难度设置为 $y$。
输入格式
第一行是一个整数 $N$,表示问题的数量。
第二行包含 $N$ 个整数,表示数组 $A$。
第三行包含 $N$ 个整数,表示数组 $\text{angry}$。
第四行是一个整数 $Q$,表示查询的数量。
接下来的 $Q$ 行描述了每个查询,格式如下:
> $t\ x\ y$
如果 $t$ 为 1,则表示你需要计算子数组 $A[l \dots r]$ 的总愤怒值;如果 $t$ 不为 1,则表示你需要将 $A[x]$ 设置为 $y$。
输出格式
对于每个类型为 1 的查询,输出一个整数,表示子数组的总愤怒值。按照查询出现的顺序依次输出结果。