문제 링크 : https://www.acmicpc.net/problem/17203

 

17203번: ∑|ΔEasyMAX|

입력의 첫 번째 줄에는 GUN이 쓴 노래의 길이 N(1 ≤ N ≤ 1,000) 초와 초당 박자 변화량의 합을 구해야 하는 구간의 수 Q(1 ≤ Q ≤ 1,000)이 공백으로 구분되어 주어진다. 입력의 두 번째 줄에는 순서대로 GUN이 쓴 노래의 박자 빠르기를 나타내는 수열 a1 a2, ... , an 이 공백으로 구분되어 주어지며, ai (-104 ≤ ai ≤ 104)는 i 초일 때 박자의 빠르기라고 한다. 입력의 세 번째 줄부터 Q 줄에 걸쳐 변화량의

www.acmicpc.net

 

 

 문제 설명 

 

1. N개의 문자와 M개의 구간이 주어진다.

2. M개의 구간이 주어질 때 M 구간의 변화량의 합을 출력.

 

 알고리즘 

 

1. Prefix Sum(구간합 배열) 을 통해 변화량을 구한다.

2. 예제를 살펴보면 

 (1,1) -> 변화량 0 

 (1,3) -> 1+ 282 이다 그러므로 구간합 배열에서  arr[3-1] - arr[1-1] = 282

 (2,4) -> arr[4-1] - arr[2-1] = arr[3] - arr[1] = 472

 

 

 코드 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<iostream>
#include<math.h>
using namespace std;
 
int main() {
    int n,m;
    int num[1001];
    int arr[1001];
 
    scanf("%d%d"&n,&m);
    
    for (int i = 0; i < n; i++) {
        scanf("%d"&num[i]);
        arr[i] = arr[i-1]+abs(num[i] - num[i - 1]);
        }
    for (int i = 0; i < m; i++) {
        int a, b;
        scanf("%d%d"&a, &b);
        printf("%d\n", arr[b-1- arr[a - 1]);
    }
 
    
 
}
cs

'c++ > 백준' 카테고리의 다른 글

백준 17136번 : 색종이 붙이기  (0) 2020.04.20
백준 11660번 : 구간 합 구하기 5  (0) 2020.04.20
백준 10597번 : 순열장난  (0) 2020.04.17
백준 2210번 : 숫자판 점프  (0) 2020.04.17
백준 2661번 : 좋은수열  (0) 2020.04.17
ariz1623