这题不难,主要注意几个坑点:

  • 用两个vector数组会内存不足
  • 给的样例运算后超出了int的范围,需要用long
using namespace std;

//时间复杂度:O(N)
//用vector老是内存超限,就用数组了
long num[100001]={0};
long sum[100001]={0};//sum[i]:第1个加到第i个的和

int main(){
    int n,q;
    cin>>n>>q;
    for(int i=0;i<n;i++)
        cin>>num[i];
    for(int i=1;i<=n;i++){
        sum[i]=num[i-1]+sum[i-1];
    }
    int l,r;
    for(int i=0;i<q;i++){
        cin>>l>>r;
        cout<<sum[r]-sum[l-1]<<endl;//相减即为num[l]到num[r]的累加值
    }
    
    return 0;
}