View problem - 개구리 (KOI13_frog)

Time limitMemory limit# of submissions# of submitted usersSolved #Accepted user ratio
1000 ms256 MiB40131076.92%

연꽃잎들이 떠있는 풍경으로 유명한 연못이 있다. 이 연못에 살고 있는 개구리는 연꽃잎과 연꽃잎 사이를 점프해서 움직이기를 좋아한다.

연못은 x,y 좌표로 표현되는 평면 상에서 x0x \ge 0, y0y \ge 0인 구역 RR로 나타낸다. 연못에 떠 있는 연꽃잎은 구역 RR 안에서 한 변의 길이가 r 인 정사각형으로 나타낸다 (그림 1). 모든 연꽃잎의 크기는 동일하고 서로 겹치지 않는다고 가정한 다. 임의의 두 연꽃잎들의 테두리가 맞닿아 있는 경우는 없다.

그림 1

좌표 (0,0)(0,0)을 포함하는 연꽃잎 SS는 항상 존재하고 개구리는 처음에 이 연꽃잎 위에 놓여있다.

개구리는 한 번의 점프로 최대 거리 dd만큼 이동 할 수 있다. 다만, 동, 서, 남, 북 방향으로만 점프 할 수 있다. 따라서 개구리가 그림 2, 3의 연꽃잎 AA에서 점프한다면 도달할 수 있는 영역은 그림 2, 3의 어두운 구역과 같다. 개구리가 연꽃잎 AA에서 다른 연꽃잎 B로 점프하기 위해서는 그림 2에서와 같이 이 구역 안에 BB의 일부분이 놓여 있어야 한다. 그림 3과 같이 이 구역에 BB의 테두리가 닿아 있는 경우도 점프할 수 있다고 가정한다.

그림 2,3

개구리가 처음 시작 연꽃잎 SS에 놓여 있을 때, 연꽃잎 위에서 이동하거나 연꽃잎에서 연꽃잎으로 점프해서 어떤 연꽃잎 위의 좌표 (a,b)(a,b)인 위치로 이동 할 수 있다. 문제는 (0,0)(0,0)으로부터 이동 가능한 가장 먼 좌표 (a,b)(a,b)를 찾는 것이다. 여기서, 좌표 (a,b)(a,b)(0,0)(0,0)으로부터의 거리는 a+ba+b로 계산된다.

입력 형식

첫째 줄에 두 개의 정수 NN, rr이 주어진다. 단, 그 범위는 1N100,0001 \le N \le 100,000, 1r10,0001 \le r \le 10,000이다. 여기서, NN은 연꽃잎들의 수를 나타내고 rr은 연꽃잎의 한 변의 길이를 나타낸다. 다음 NN개의 줄 각각에는 하나의 연꽃잎의 왼쪽 아래 꼭지 점의 좌표 (x,y)(x,y)를 나타내는 두 정수 xxyy가 공백을 사이에 두고 주어진다. 단, 0x,y10,000,0000 \le x, y \le 10,000,000이다. 다음 줄에는 개구리가 한 번의 점프로 연꽃잎 사이를 이동할 수 있는 최대 거리 dd가 주어 진다. 단, 1d1,000,0001 \le d \le 1,000,000이다.

출력 형식

출력은 한 줄로 이루어져 있다. 개구리가 (0,0)(0,0)으로부터 이동 가능한 가장 먼 좌표까지의 거리를 출력한다.

입력과 출력의 예

예제 1

입력

5 3
0 0
1 4
5 5
6 1
10 4
1

출력

20

예제 2

입력

12 3
0 0
4 0
9 0
17 0
13 2
2 5
7 5
19 6
3 9
9 9
15 9
19 10
2

출력

24