반응형
https://www.acmicpc.net/problem/15922
주어진 범위는 x, y순의 오름차순으로 주어집니다.
현재 입력받은 x가, 이전에 입력받았던 y보다 작다면, 현재 입력받은 선분의 범위는 이전 범위와 겹치게 됩니다.
겹치는 부분은 제외하고 계산되도록 현재의 x를 이전의 y로 치환해줍니다.
또, 현재의 x가 현재의 y보다 크다면, 지금 입력받은 선분의 범위는 0이 되고,
다음에 입력받을 범위도 이전에 입력받은 범위에 포함될 수 있으므로, 현재의 y를 현재의 x로 치환해줍니다.
#include <cstdio>
int n, a, b, pa = -1e9, pb = -1e9, ans = 0;
int main() {
scanf("%d", &n);
while (n-- && scanf("%d %d", &a, &b)) {
if (a < pb) {
a = pb;
if (a > b) b = a;
}
ans += b - a;
pa = a, pb = b;
}
printf("%d", ans);
}
반응형
'Algorithm' 카테고리의 다른 글
백준 2352 : 반도체 설계 (0) | 2021.11.17 |
---|---|
백준 9470 : Strahler 순서 (0) | 2021.11.17 |
백준 1726 : 로봇 (0) | 2021.11.17 |
백준 16562 : 친구비 (0) | 2021.11.17 |
백준 2458 : 키 순서 (0) | 2021.11.17 |