표적 연습 II
시간 제한2.5초메모리 제한1024 MB
y축 위의 소 4N마리를 표적의 꼭짓점에 하나씩 배정하여 발사 경로가 표적 내부를 지나지 않게 하면서, 가장 멀리 떨어진 두 소 사이 거리를 최소화합니다.
문제
참고: 이 문제에 나오는 정수는 매우 커서 64비트 정수 자료형(C/C++의 long long 등)을 써야 할 수 있습니다.
파리 무올림픽이 다가오고 있어 파머 존은 소 팀에게 양궁 훈련을 시키고 있습니다. 그는 2차원 좌표 평면에서 다음 연습을 준비했습니다.
축에 평행한 직사각형 표적이 개() 있고, 소는 마리 있습니다. 모든 소는 서로 다른 표적의 꼭짓점에 하나씩 배정되어야 합니다. 인 각 시점 에서 다음 순서로 진행됩니다.
- 표적 가 나타난다.
- 꼭짓점에 배정된 소 4마리가 표적을 향해 쏜다.
- 화살이 배정된 꼭짓점에 맞기 전이나 빗나가기 전에 표적의 내부를 지나면, 소들은 연습에 실패한다.
- 다음 표적을 위한 자리를 내도록 현재 표적이 사라진다.
각 소는 축() 위에 있습니다. 표적 는 왼쪽 아래 꼭짓점이 , 오른쪽 위 꼭짓점이 인 직사각형입니다. 좌표는 , 을 만족합니다. 은 모든 표적에서 같습니다.
또한 각 소에는 집중하는 "조준 각도"가 있어서, 쏠 때 특정 각도로 방향을 틉니다. 화살은 소의 위치에서 배정된 꼭짓점까지 직선으로 날아갑니다. 소 의 궤적은 기울기 ()로 주어집니다.
파머 존은 소들의 기술을 자세히 살펴보고 싶어 합니다. 그래서 가장 멀리 떨어진 두 소 사이의 거리를 최소로 만들려 합니다. 각 소를 꼭짓점에 최적으로 배정하고 축 위에 배치한다면, 가장 멀리 떨어진 소들 사이 거리의 최솟값은 얼마입니까? 소들이 항상 실패한다면 -1을 출력하세요.
입력
첫 줄에 테스트 케이스의 개수 ()가 주어집니다. 각 테스트 케이스는 다음과 같습니다.
각 테스트 케이스의 첫 줄에는 표적의 개수 과 표적들의 가장 왼쪽 좌표 이 주어집니다. 이어서 줄이 주어지며, 번째 줄에는 표적 의 아래쪽 좌표 , 위쪽 좌표 , 오른쪽 좌표 가 주어집니다.
마지막 줄에는 개의 정수 이 주어집니다. 는 소 가 쏘는 화살 궤적의 기울기입니다. 모든 테스트 케이스의 합은 을 넘지 않습니다.
출력
가장 멀리 떨어진 소들 사이 거리의 최솟값을 출력합니다. 소들이 항상 실패하면 을 출력합니다.