public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int[] arr = new int[N + 1];
StringBuilder sb = new StringBuilder();
st = new StringTokenizer(br.readLine());
arr[0] = 0; // 첫 번째 값은 0으로 초기화
for(int i = 1; i <= N; i++) {
arr[i] = arr[i - 1] + Integer.parseInt(st.nextToken());
}
for(int i = 0; i < M; i++) {
st = new StringTokenizer(br.readLine());
int start = Integer.parseInt(st.nextToken());
int end = Integer.parseInt(st.nextToken());
sb.append(arr[end] - arr[start - 1]).append("\n");
}
System.out.println(sb);
}
첫 번째 값은 0으로 초기화를 한다. 1부터 시작해서 i-1 + nextToken()을 해줘야 하기 때문에
배열 자체에 애초부터 구간의 합을 저장해야 시간초과가 되지 않음.