割韭菜
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小王家的后院有一块菜园,并且小王非常的喜欢吃韭菜,这天小王打算在自家的菜园种植韭菜。
起初小王种植了n棵韭菜的种子,此时n棵韭菜的高度都为0,由于小王每天都会给所有的韭菜施肥,所以韭菜生长的速度飞快,但因为韭菜种子质量不同,施肥后每颗韭菜每天以固定a[i]的速度生长。
接下来的日子里,小王有m天想要吃韭菜,对于第D[i]天小王会把所有高度高于B[i]的韭菜收割到B[i],小王想知道每次他收割韭菜的总收割量。

输入描述:

第一行给定一个t,代表t组测试数据。(1<=t<=10)

对于每组数据,给定n,m代表有n棵韭菜,m次收割操作。

(1<=n,m<=1e5,∑n,∑m<=5e5)

接下来一行,给定每棵韭菜每天可以增长的高度a[i]。(1<=a[i]<=1e5)

下面m行,每行给定D[i],B[i],代表第D[i]天收割高于B[i]的韭菜,D[i]保证单调递增。(1<=D[i]<=1e9,1<=B[i]<=1e9)

(数据保证没有任何时刻韭菜高度的总和超出long long范围)

输出描述:

对于每组测试数据输出m行,每行代表收割得到韭菜高度的总和。

示例1

输入

复制
1
4 4
1 3 4 2
1 1
2 0
3 3
4 1000

输出

复制
6
14
1
0