티스토리 뷰

해석하는데 1시간 넘게 걸렸다 ㅎㅎ


1~10억 사이의 길에 P라는 위치에 높이 S 짜리 막대기를 놓는다고 생각하면 편하다. 그 후 만약 막대 사이의 거리가 막대보다 높다면 부수기 가능


N이 4000이니까 완탐을하자

양쪽 방향으로 가서 탈출 가능하다면 넘기고 

불가능하다면 답에 더하자


소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <algorithm>
using namespace std;
int n;
pair<intint> arr[4444];
int main() {
    scanf(" %d"&n);
    for (int i = 0; i < n; i++scanf(" %d %d"&arr[i].second, &arr[i].first);
    sort(arr, arr + n);
    int ans = 0;
    for (int i = 0; i < n-1; i++) {
        int l = i, r = i + 1;
        bool ok = false;
        while (1) {
            if (l == -1 || r == n) {
                ok = truebreak;
            }
            int sum = arr[r].first - arr[l].first;
            if (sum <= arr[l].second && sum <= arr[r].second) break;
            if (sum > arr[r].second) r++;
            if (sum > arr[l].second)  l--;
        }
        if (!ok) ans += arr[i + 1].first - arr[i].first;
    }
    printf("%d\n", ans);
}
cs


'알고리즘 > BOJ' 카테고리의 다른 글

[백준] 15386 Birokracija  (3) 2018.07.12
[백준] 10767 Palindromic Paths  (0) 2018.07.11
[백준] 10765 Bessie Gets Even  (0) 2018.07.11
[백준] 10764 Moocryption  (0) 2018.07.11
[백준] 12865 평범한 배낭  (1) 2018.07.11
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함