NEFU 982 vd数蚂蚁

来源:互联网 发布:全面体育类直播软件 编辑:程序博客网 时间:2024/04/30 22:30

vd数蚂蚁

vd数蚂蚁

Problem : 982

Time Limit : 2000ms

Memory Limit : 65536K

description

vd闲着无聊就喜欢蹲在蚂蚁窝旁数蚂蚁,他的小伙伴们偶尔会路过,假装关心的问问有多少只进出。vd会记下n([1,n])分钟内,每分钟有多少蚂蚁经过:如果有2只出来就是2,如果有2只进去就是-2,一进一出就是0。小伙伴会在路过m次,每次路过会询问第t1i到t2i(1<=t1i<=t2i<=n)分钟总共进出的蚂蚁只数数。

input

多组输入输出。每组第一行,两个正整数n,m(1<=n,m<=10^5)。第二行是n个整数,表示第i分钟经过了ai只(|ai|<=100)。接下来m行,每行一个整数,表示t1i,t2i。

output

对每一次询问输出答案(一行一个整数)。

sample_input

5 42 -2 2 5 01 11 23 43 5

sample_output

2077

hint

source

打表思想。
AC code:
</pre><pre name="code" class="cpp">#include<iostream>#include<cstdio>using namespace std;int a[200000];int main(){    int n,m;    while(cin>>n>>m)    {        for(int i=1;i<=n;i++)        scanf("%d",&a[i]);        a[0]=0;        for(int i=1;i<=n;i++)        {            a[i]=a[i-1]+a[i];        }        while(m--)        {            int b,c;            int sum=0;            scanf("%d%d",&b,&c);            printf("%d\n",a[c]-a[b-1]);        }    }}


Time Limit Exceeded  :
#include<iostream>#include<cstdio>using namespace std;int a[200000];int main(){    int n,m;    while(cin>>n>>m)    {        for(int i=1;i<=n;i++)        scanf("%d",&a[i]);        while(m--)        {            int b,c;            int sum=0;            scanf("%d%d",&b,&c);            for(int i=b;i<=c;i++)            sum+=a[i];            printf("%d\n",sum);        }    }}

0 0