UMR与欧尼酱

Problem Description

Umaru 今天看到新发售的游戏之后,又耐不住要马上买来惹,然而众所周知 UMR 是干物女,所以她又去烦她的欧尼酱啦,欧尼酱真是拿小埋没办法 (¬_¬),所以只好做出了妥协。
欧尼酱告诉她,我现在给你 N 个数,标号 1 到 N,然后我会进行 M 次询问,对于每次询问我会告诉你一个区间 L,R(L <= R),你只要能在规定的时间内告诉我从第 L 个数到第 R 个数之间所有数的和,我就去给你买╮(╯_╰)╭。

UMR
(小埋:欧尼酱真当我是一个干物女啊)

大家都知道小埋智商超高,你觉得小埋是怎么做的呢,答对了小埋就会送你一个 AC 哦~

Input

输入数据有多组(数据组数不超过 20),到 EOF 结束。
每组输入包含 M+2 行,第一行为两个正整数 N 和 M (1 <= N, M <= 100000)。 
接下来一行 N 个非负整数,每个数不超过 100。
接下来 M 行,每行包含两个数 L, R (1<= L <= R <= N)。

Output

对于每次询问,给出区间 L~R 的所有整数的和,每个答案占一行。

Example Input
5 4
1 2 3 4 5
1 2
2 2
1 5
4 5
Example Output
3
2
15
9
Hint
看了看范围..恩100000
用for循环做的话肯定会超时,
所以这里要用别的方法
方法就是用前R项减前L项...
源代码
01 #include<stdio.h>
02 int main()
03 {
04     int N,M,i,j,qushu,L,R;
05     long long int he[111111];
06     while(scanf("%d%d",&N,&M)!=EOF)
07     {
08         he[0]=0;
09         for(i=1;i<=N;i++)
10         {
11             scanf("%d",&qushu);
12             he[i]=he[i-1]+qushu;
13         }
14         for(j=1;j<=M;j++)
15         {
16             scanf("%d%d",&L,&R);
17             printf("%d\n",he[R]-he[L-1]);  //算的是[L,R],所以相减时应把he[L]去掉;
18         }
19     }
20     return 0;
21 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值