#include<stdio.h> #include<algorithm> int ans, N, tmpy; struct ABC { int x, y; }data[1000100]; bool comp(const ABC &i, const ABC &j) { if (i.x == j.x) { return i.y<j.y; } else return i.x<j.x; } int main() { int i, tmp; scanf("%d", &N); for (i = 1; i <= N; i++) { scanf("%d%d", &data[i].x, &data[i].y); if (data[i].x>data[i].y) { tmp = data[i].x; data[i].x = data[i].y; data[i].y = tmp; } } std::sort(data + 1, data + 1 + N, comp); ans += data[1].y - data[1].x; tmpy = data[1].y; for (i = 2; i <= N; i++) { if (tmpy <= data[i].x) { ans += data[i].y - data[i].x; tmpy = data[i].y; } else if (tmpy>data[i].x&&data[i].y>tmpy) { ans += data[i].y - data[i].x - (tmpy - data[i].x); tmpy = data[i].y; } else { ans += data[i].y - data[i].x - (data[i].y - data[i].x); } } printf("%d", ans); return 0; }
2170번: 선 긋기
https://www.acmicpc.net/problem/2170
피드 구독하기:
댓글
(
Atom
)
댓글 없음 :
댓글 쓰기