【问题描述】
周末,小华和妈妈一道去乡下的外婆家,有路公交车正好直达,他们打算乘公交车到外
婆家。细心的小华发现公交车一共要经过 n+1 个站点,起点是 0 号站点,终点站是 n,并且
每个站点的距离不一样,所以每一站的乘车费用也不尽相同。
现在小华在思考一个问题:从起点站开始到 n 号站点陆陆续续共有 m 个人乘车,已知这
m 个人乘车区间,以及相邻两站(i-1 站到 i 站)的乘车费用,那么在这一趟单程车次中,售
票员一共卖出多少票额的车票。一个人乘车费用是他在乘车区间各站费用之和。
【输入格式】
第一行,一个空格隔开的两个正整数 n 和 m。
第二行,有 n 个正整数,各数之间用一个空格隔开,第 i 个数表示站点 i-1 到站点 i 之间
的乘车费用(费用 100 以内正整数)。
接下来,有 m 行,每一行两个整数,描述了 m 个人乘车区间站点信息(上车和下车的站
点)。
【输出格式】
总共卖出的票额。
【输入样例】
5 3
2 3 2 4 3
0 2
3 5
1 4
【输出样例】
21
【数据规模】
2≤n≤100000,1≤m≤10000
计算数据范围可知结果最大达到10^11,所以使用long long
#include<bits/stdc++.h>
using namespace std;
long long s[200000];
int main()
{
int n,m,i,a,x,y;
long long ans=0;
cin>>n>>m;
memset(s,0,sizeof(s));
for(i=1;i<=n;i++)
{
cin>>a;
s[i]=s[i-1]+a;
}
for(i=1;i<=m;i++)
{
cin>>x>>y;
ans+=s[y]-s[x];
}
cout<<ans;
}