좌표 0~1,000,000 안에서 2*k + 1짜리 연속 부분수열의 합의 최대값을 구하면 된다.



<코드>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
using namespace std;
 
int n, k, a[1000001], s, ans;
 
int main() {
    scanf("%d%d"&n, &k);
    for (int i = 0, b, c; i < n; i++) {
        scanf("%d%d"&b, &c);
        a[c] = b;
    }
    k = k * 2 + 1;
    for (int i = 0; i <= 1000000; i++) {
        if (i >= k) s -= a[i - k];
        s += a[i];
        ans = s > ans ? s : ans;
    }
    printf("%d\n", ans);
    return 0;
}
cs


'BOJ' 카테고리의 다른 글

11762 A Towering Problem  (0) 2017.08.31
1884 고속도로  (0) 2017.08.31
14619 섬 여행  (0) 2017.08.30
11664 선분과 점  (0) 2017.08.30
1069 집으로  (0) 2017.08.30

+ Recent posts