游游的整数操作
题号:NC255375
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

游游拿到了一个数组,她有两种操作;
1. 输入1 x,代表所有数加x。
2. 输入2 x,代表所有数减x,同时将所有的负数变成0。即对于每个a_i,把a_i变成max(a_i-x,0)

游游在操作结束后,希望你能告诉她所有数之和,答案对10^9+7取模。

输入描述:

第一行输入两个正整数nk,代表数组长度以及操作次数。
第二行输入n个正整数a_i。代表初始的数组。
接下来的k行,每行输入两个正整数opx。其中op代表操作类型。
1\leq n,k \leq 10^5
1\leq x,a_i \leq 10^9
1\leq op \leq 2

输出描述:

操作结束后所有数之和对10^9+7取模的值。
示例1

输入

复制
5 2
1 2 3 4 5
2 2
1 1

输出

复制
11

说明

第一次操作后,数组变成 [0,0,1,2,3]
第二次操作后,数组变成 [1,1,2,3,4]