티스토리 뷰
해석하는데 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<int, int> 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 = true; break; } 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 |
댓글