MountainCraft
시간 제한5초메모리 제한2048 MB
산봉우리가 나타나거나 사라질 때마다 뷰포트 [0, w]에서 보이는 산의 윤곽선 총 길이를 구합니다.
문제
기분 좋은 날이다. 비디오 게임 메타월드 MountainCraft는 탐험할 산이 넓게 펼쳐진 오픈 월드다. 게임 속 아바타는 외딴 섬에서 깨어나 수평선의 산들을 바라본다.
수평선은 직교 좌표평면으로 나타낸다. 축()이 육지와 바다를 나눈다. 각 산의 봉우리는 점 이다. 산의 양쪽 면은 기울기 과 을 가지며, 봉우리를 꼭대기로 하는 삼각형을 이룬다.
아바타는 뷰포트 안에 있는 산의 부분만 볼 수 있다. 다른 산과 겹치지 않는 산의 보이는 모서리는 굵게 렌더링된다. 산이 겹치는 부분은 굵게 렌더링되지 않는다. 모서리가 서로 교차하지 않아도 산은 겹칠 수 있다.

그림 H.1: 모든 산이 나타난 후의 첫 번째 입력.
그래픽 오류 때문에 산이 나타났다가 사라질 수 있다. 변화가 생길 때마다 현재 뷰포트에 보이는 굵은 선의 총 길이를 구하라.
입력
첫 줄에 두 정수 ()와 ()가 주어진다. 는 질의 수이고 는 뷰포트의 너비다. 뷰포트는 0에서 까지 펼쳐진다.
다음 개 줄에는 어떤 산의 봉우리를 나타내는 두 정수 ()와 ()가 주어진다. 가 보이는 산의 봉우리이면 그 산이 사라진다. 그렇지 않으면 그 산이 나타난다.
출력
개 줄을 출력한다. 각 질의마다 순서대로, 렌더링되는 굵은 선의 총 길이를 한 수로 출력한다. 절대 오차 또는 상대 오차가 이내이면 정답으로 인정한다.
힌트
첫 번째 입력에서 처음 두 산은 에서 교차한다. 그 교점 아래에 있는 산의 부분은 굵게 렌더링되지 않는다.
두 번째 입력에서 왼쪽 산은 나타났다가 사라지고 다시 나타난다. 오른쪽 산은 나타났다가 사라진다.