넥슨에서 새로 개발하고 있는 전략 시뮬레이션 게임은 다음과 같은 규칙으로 이루어져 있다.
- 전투가 벌어지는 곳은 가로 개, 세로 개의 칸이 있는 격자 모양이다. 가장 왼쪽 아래 칸은 이고, 가장 오른쪽 위 칸은 이다.
- 각 격자의 눈에는 우리편 대, 적 대의 대포가 놓여 있을 수 있다.
- 대포는 움직일 수 없다.
- 대포의 사정 거리, 즉 포탄이 가장 멀리 갈 수 있는 거리는 다음과 같이 정해진다. 현재 우리 편 대포의 위치가 이고, 적 대포의 위치가 이라면, 포탄이 간 거리는 이다.
- 모든 대포의 사정 거리는 같다.
- 우리 편부터 시작하여 한 턴에 하나의 대포를 발사할 수 있으며, 포탄을 맞은 대포는 파괴된다.
규칙이 위와 같이 주어졌을 때, 당신은 당연히 게임에서 이기고 싶다. 그러려면 상대가 나의 어느 대포를 먼저 파괴할 지 알 수 없기 때문에, 내가 가지고 있는 어떤 대포도 모든 상대 대포를 파괴할 수 있도록 하고 싶다. 대포의 사정거리를 업그레이드하려면 그 비용이 거리에 따라 늘어나기 때문에, 가장 적은 비용을 들이고 싶다. 아래 그림의 예를 고려해보자. 우리 편의 대포는 A, 적의 대포는 B로 표현하였다.

, , 위치에 우리 편의 대포가 셋 있고, , , 위치에 적의 대포가 셋이 있다.
- 에 있는 우리 편 대포가 가장 멀리 떨어진 에 있는 적의 대포를 파괴하려면 사정 거리가 이어야 한다. ()
- 에 있는 우리 편 대포가 가장 멀리 떨어진 에 있는 적의 대포를 파괴하려면 사정 거리가 여야 한다. ()
- 에 있는 우리 편 대포가 가장 멀리 떨어진 에 있는 적의 대포를 파괴하려면 사정 거리가 여야 한다. ()
위 세 가지 경우를 모두 고려하면, 대포의 사정 거리가 최소 이어야 적의 모든 대포를 공격할 수 있는 것을 알 수 있다.
격자의 크기, 대포의 수, 대포의 위치가 주어졌을 때 적의 모든 대포를 공격할 수 있는 최소 사정 거리를 구하는 프로그램을 작성하시오.
입력 형식
첫째 줄에 격자의 크기를 나타내는 자연수 ( 이상 이하)과 각 편의 대포의 수 ( 이상 이하)가 주어진다.
다음 줄에는 두 정수 가 주어지는데, 각각 우리 편 대포의 좌표 를 나타낸다. , 는 모두 이상 이하이다.
다음 줄에도 두 정수 가 주어지는데, 각각 적 대포의 좌표 를 나타낸다. , 는 모두 이상 이하이다.
출력 형식
한 줄로 결과를 출력한다. 여기에는 적 대포를 모두 공격할 수 있는 최소 사정 거리를 나타내는 정수 하나를 출력한다.
예제
입력
5 3 1 2 2 3 3 1 3 5 4 5 5 4
출력
6
채점 방식
입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞추어야 그 종류에 배정된 점수를 받을 수 있다.
종류 1: 40점
종류 2: 80점
모든 대포는 한 줄에 있다. 즉, 좌표가 모두 같거나 좌표가 모두 같다.
종류 2: 200점
문제의 원래 제한조건 이외의 추가된 제한이 없음.
해설
문제를 정리하면 모든 아군과 적군쌍(총 개)에 대한 거리의 최대값이 가능한 사정거리의 최소값이다. 문제를 축소시켜서 대포가 차원에 있다고 하자. 그럼 가장 왼쪽 아군 대포와 가장 오른쪽 적군 대포 그리고 가장 왼쪽 적군 대포와 가장 오른쪽 아군 대포의 거리 중 더 큰 값이 사정거리가 된다. 이걸 차원에서의 맨해튼 거리(택시거리)로 생각을 해보면, 도 방향과, 도 방향을 고려하면 차원에서의 풀이와 같아진다는 것을 알 수 있다.