「SFCOI-4」丰饶的小镇
时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

\hspace{15pt}小 S 有一个长度为 n排列 p。他感到无聊,于是进行了这样的思想实验:按原序取出下标从 lr 的元素,得到长度为 n' = r - l + 1 的子序列 p'
\hspace{15pt}他构想这样得到的子序列是小镇上的一条街道,在这条街道的 n' 栋建筑中居住着许多人,初始第 i 栋建筑中有 2^{p'_i} 个人。
\hspace{15pt}在每一秒内,这条街道上的人都会搬一次家,他们都会同时搬到相邻(如果存在)且人数最多的建筑中,不可以停留在原建筑不搬家;若相邻建筑中人数相同,则可任选一侧。
\hspace{15pt}在 10^{114514^{1919810}} 秒后,设第 i 栋建筑中有 a_i 个人。小 S 给出每一栋建筑的重要性序列 c,并定义整个小镇的「丰饶度」为:

\displaystyle\sum_{i = 1}^{n'} \Big( c_{i + l - 1} \times \big\lfloor \log_2 \max(a_i, 1) \big\rfloor \Big)

\hspace{15pt}他一共进行了 q 次思想实验,每次实验均基于原排列 p 独立进行,互不影响。对于每一次实验,请你告诉小 S 这座小镇最后的「丰饶度」。

【名词解释】
\hspace{15pt}长度为 n排列:由 1,2,\dots,nn 个整数、按任意顺序组成的数组(每个整数均恰好出现一次)。例如,\{2,3,1,5,4\} 是一个长度为 5 的排列,而 \{1,2,2\}\{1,3,4\} 都不是排列,因为前者存在重复元素,后者包含了超出范围的数。

输入描述:

\hspace{15pt}第一行输入两个整数 n, q\left(2 \leq n \leq 2 \times 10^5;\, 1 \leq q \leq 2 \times 10^5\right),表示建筑数量、思想实验次数。
\hspace{15pt}第二行输入 n 个两两不同的整数 p_1, p_2, \dots, p_n \left(1 \leq p_i \leq n\right),表示排列 p
\hspace{15pt}第三行输入 n 个整数 c_1, c_2, \dots, c_n \left(1 \leq c_i \leq 10^8\right),表示小镇上第 i 栋建筑的重要性。
\hspace{15pt}此后 q 行,第 i 行输入两个整数 l_i, r_i \left(1 \leq l_i < r_i \leq n\right),表示第 i 次思想实验的区间。

输出描述:

\hspace{15pt}对于每一次思想实验,新起一行输出一个整数,表示小镇最后的「丰饶度」。
示例1

输入

复制
8 2
1 2 3 4 5 6 7 8
8 7 6 5 4 3 2 1
2 7
1 8

输出

复制
32
22

说明

\hspace{15pt}对于第一次思想实验,起初各建筑中的人数依次为 4, 8, 16, 32, 64, 128
\hspace{23pt}\bullet\,1 秒后,各建筑中的人数依次为 0, 4, 8, 16, 160, 64
\hspace{23pt}\bullet\,2 秒后,各建筑中的人数依次为 0, 0, 4, 8, 80, 160
\hspace{23pt}\bullet\,3 秒后,各建筑中的人数依次为 0, 0, 0, 4, 168, 80
\hspace{23pt}\bullet\,4 秒后,各建筑中的人数依次为 0, 0, 0, 0, 84, 168
\hspace{23pt}\bullet\,5 秒后,各建筑中的人数依次为 0, 0, 0, 0, 168, 84
\hspace{23pt}\bullet\,\cdots
\hspace{23pt}\bullet\,10^{114514^{1919810}} 秒后,各建筑中的人数依次为 0, 0, 0, 0, 84, 168
\hspace{15pt}因此,该实验的答案为 c_6 \times \big\lfloor \log_2 \max(84, 1) \big\rfloor + c_7 \times \big\lfloor \log_2 \max(168, 1) \big\rfloor = 32