【模板】前缀和
题号:NC226282
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}对于给定的长度为 n 的数组 \{a_1,a_2,\dots,a_n\} ,我们有 m 次查询操作,每一次操作给出两个参数 l,r ,你需要输出数组中第 l 到第 r 个元素之和,即 a_l + a_{l+1} + \dots + a_r 。

输入描述:

\hspace{15pt}第一行输入两个整数 n,m \left( 1 \leqq n,m \leqq 10^5\right) 代表数组中的元素数量、查询次数。
\hspace{15pt}第二行输入 n 个整数 a_1,a_2,\dots,a_n \left( -10^9 \leqq a_i \leqq 10^9 \right) 代表初始数组。
\hspace{15pt}此后 m 行,每行输入两个整数 l,r \left( 1 \leqq l \leqq r \leqq n \right) 代表一次查询。

输出描述:

\hspace{15pt}对于每一次查询操作,在一行上输出一个整数,代表区间和。
示例1

输入

复制
3 2
1 2 4
1 2
2 3

输出

复制
3
6