본문 바로가기
Algorythms

백준 11441번 합 구하기 c++ 풀이

by 준형코딩 2024. 2. 5.

문제

N개의 수 A1, A2, ..., AN이 입력으로 주어진다. 총 M개의 구간 i, j가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 수의 개수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄에는 A1, A2, ..., AN이 주어진다. (-1,000 ≤ Ai ≤ 1,000) 셋째 줄에는 구간의 개수 M이 주어진다. (1 ≤ M ≤ 100,000) 넷째 줄부터 M개의 줄에는 각 구간을 나타내는 i와 j가 주어진다. (1 ≤ i ≤ j ≤ N)

출력

총 M개의 줄에 걸쳐 입력으로 주어진 구간의 합을 출력한다.

예제 입력 1 복사

5
10 20 30 40 50
5
1 3
2 4
3 5
1 5
4 4

예제 출력 1 복사

60
90
120
150
40

예제 입력 2 복사

3
1 0 -1
6
1 1
2 2
3 3
1 2
2 3
1 3

예제 출력 2 복사

1
0
-1
1
-1
0

 

 

간단한 누적합으로 구할 수 있었다.

 

- c++ 풀이

#include <bits/stdc++.h>

using namespace std;

int n;
int m;
int arr[100001];


int main() {
    ios::sync_with_stdio(false);
    cin.tie(NULL);

    cin >> n;

    for (int i = 1; i <= n; i++) {
        cin >> arr[i];
    }

    for (int i = 2; i <= n; i++) {
        arr[i] += arr[i - 1];
    }

    cin >> m;

    for (int i = 0; i < m; i++) {
        int from, to;
        cin >> from >> to;
        cout << arr[to] - arr[from - 1] << "\n";
    }

}