철로

끝점 위치가 각각 다른 n개의 구간이 주어질 때, 길이가 d인 어떤 선분에 온전히 포함되는 구간의 최대 개수를 구한다.

보통6정렬슬라이딩 윈도우투 포인터구간면접 대비아직 제출이 없습니다시간 제한1초메모리 제한512 MB

문제

집과 사무실을 오가며 통근하는 사람이 nn명 있다. 각 사람의 집과 사무실은 수평선 위의 서로 다른 두 점에 있다. 두 사람 AABB에 대해 AA의 집이나 사무실 위치가 BB의 집이나 사무실 위치와 같을 수 있다.

통근하는 사람들을 위해 수평선 위의 두 점을 잇는 철로를 놓고 기차를 운행하려고 한다. 예산이 한정되어 있어 철로의 길이는 dd로 정해져 있다. 집과 사무실이 모두 철로 위에 놓이는 사람 수가 최대가 되도록 철로를 놓으려고 한다.

양의 정수 dd와 정수쌍 (hi,oi)(h_i, o_i)1in1 \le i \le n에 대해 주어진다. hih_i는 사람 ii의 집 위치, oio_i는 사무실 위치이다. 길이가 dd인 모든 선분 LL 가운데, 집과 사무실이 모두 LL에 포함되는 사람 수의 최댓값을 구하는 프로그램을 작성하시오. 선분의 양 끝점도 선분에 포함된다.

그림 1. 여덟 사람의 집과 사무실 위치

그림 1은 여덟 사람의 집과 사무실 위치를 나타낸다. d=30d = 30일 때 위치 10과 40을 잇는 빨간 선분은 집과 사무실을 모두 담는 사람이 가장 많은 선분 가운데 하나이고, 그때 사람 수는 4이다.

입력

입력은 표준 입력으로 받는다. 첫째 줄에 사람 수를 나타내는 양의 정수 nn (1n100,0001 \le n \le 100{,}000)이 주어진다. 이어지는 nn개 줄에 정수쌍 hih_ioio_i가 공백을 사이에 두고 주어진다. hih_ioio_i100,000,000-100{,}000{,}000 이상 100,000,000100{,}000{,}000 이하이고 서로 다르다. 마지막 줄에 철로의 길이를 나타내는 정수 dd (1d200,000,0001 \le d \le 200{,}000{,}000)가 주어진다.

출력

출력은 표준 출력으로 한다. 길이가 dd인 선분 가운데 집과 사무실이 모두 그 선분에 포함되는 사람 수의 최댓값을 한 줄에 출력한다.