运行后时间超限

#include<stdio.h>

int main()

{

int n,m,i,x,y;
scanf("%d %d",&n,&m);
int a[n+1];
for(i=1;i<n+1;i++)
{
    scanf("%d",&a[i]);
}
while(m--)
{
    int sum=0;
    scanf("%d %d",&x,&y);
    for(i=x;i<=y;i++)
    {
        sum+=a[i];
    }
    printf("%d\n",sum);
}
return 0;

} 采用前缀和数组的计算。

#include<stdio.h>

int main() {

int n,m,i,x,y;
scanf("%d %d",&n,&m);
int a[n+1],sum1[n+1];
for(i=1;i<n+1;i++)
{
    scanf("%d",&a[i]);
    sum1[i]=sum1[i-1]+a[i];//同时计算前缀和
}
while(m--)
{
    int sum=0;
    scanf("%d %d",&x,&y);
    sum=sum1[y]-sum1[x-1];
    printf("%d\n",sum);
}
return 0;

}