이번 문제는 쉽게 생각하면 받은 두 인덱스를 for문에 넣어서 구하면 된다. 그러나 이런 방식으로 구하면 시간 초과가 발생한다.
문제의 해결 방법은 문제 이름에 있었다. 구간 합을 구하면 간단하게 풀 수 있는 문제다.
#include <iostream>
#define MAX 100001
using namespace std;
int n, m;
int arr[MAX];
int psum[MAX];
int a, b;
void Input(){
cin>>n>>m;
for(int i=1; i<=n; i++){
cin>>arr[i];
if(i==1)
psum[i]==arr[i];
psum[i]=psum[i-1]+arr[i];
}
}
int Solution(int a, int b){
return psum[b]-psum[a-1];
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
Input();
for(int j=0; j<m; j++){
cin>>a>>b;
cout<<Solution(a, b)<<'\n';
}
return 0;
}