만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

표적 연습 II

시간 제한2.5초메모리 제한1024 MB

요약
y축 위의 소 4N마리를 표적의 꼭짓점에 하나씩 배정하여 발사 경로가 표적 내부를 지나지 않게 하면서, 가장 멀리 떨어진 두 소 사이 거리를 최소화합니다.
난이도

어려움10점 중 8점

유형
기하, 이분 탐색, 그리디, 정렬
정답자
아직 제출이 없습니다

문제

참고: 이 문제에 나오는 정수는 매우 커서 64비트 정수 자료형(C/C++의 long long 등)을 써야 할 수 있습니다.

파리 무올림픽이 다가오고 있어 파머 존은 소 팀에게 양궁 훈련을 시키고 있습니다. 그는 2차원 좌표 평면에서 다음 연습을 준비했습니다.

축에 평행한 직사각형 표적이 NN개(1≤N≤4⋅1041 \leq N \leq 4 \cdot 10^4) 있고, 소는 4N4N마리 있습니다. 모든 소는 서로 다른 표적의 꼭짓점에 하나씩 배정되어야 합니다. 1≤i≤N1 \leq i \leq N인 각 시점 ii에서 다음 순서로 진행됩니다.

  1. 표적 ii가 나타난다.
  2. 꼭짓점에 배정된 소 4마리가 표적을 향해 쏜다.
  3. 화살이 배정된 꼭짓점에 맞기 전이나 빗나가기 전에 표적의 내부를 지나면, 소들은 연습에 실패한다.
  4. 다음 표적을 위한 자리를 내도록 현재 표적이 사라진다.

각 소는 yy축(x=0x = 0) 위에 있습니다. 표적 ii는 왼쪽 아래 꼭짓점이 (X1,y1(i))(X_1, y_1^{(i)}), 오른쪽 위 꼭짓점이 (x2(i),y2(i))(x_2^{(i)}, y_2^{(i)})인 직사각형입니다. 좌표는 1≤X1<x2(i)≤1091 \leq X_1 < x_2^{(i)} \leq 10^9, 1≤y1(i)<y2(i)≤1091 \leq y_1^{(i)} < y_2^{(i)} \leq 10^9을 만족합니다. X1X_1은 모든 표적에서 같습니다.

또한 각 소에는 집중하는 "조준 각도"가 있어서, 쏠 때 특정 각도로 방향을 틉니다. 화살은 소의 위치에서 배정된 꼭짓점까지 직선으로 날아갑니다. 소 ii의 궤적은 기울기 sis_i(0<∣si∣<1090 < |s_i| < 10^9)로 주어집니다.

파머 존은 소들의 기술을 자세히 살펴보고 싶어 합니다. 그래서 가장 멀리 떨어진 두 소 사이의 거리를 최소로 만들려 합니다. 각 소를 꼭짓점에 최적으로 배정하고 yy축 위에 배치한다면, 가장 멀리 떨어진 소들 사이 거리의 최솟값은 얼마입니까? 소들이 항상 실패한다면 -1을 출력하세요.

입력

첫 줄에 테스트 케이스의 개수 TT (1≤T≤101 \leq T \leq 10)가 주어집니다. 각 테스트 케이스는 다음과 같습니다.

각 테스트 케이스의 첫 줄에는 표적의 개수 NN과 표적들의 가장 왼쪽 xx 좌표 X1X_1이 주어집니다. 이어서 NN줄이 주어지며, ii번째 줄에는 표적 ii의 아래쪽 yy 좌표 y1(i)y_1^{(i)}, 위쪽 yy 좌표 y2(i)y_2^{(i)}, 오른쪽 xx 좌표 x2(i)x_2^{(i)}가 주어집니다.

마지막 줄에는 4N4N개의 정수 s1,s2,…,s4Ns_1, s_2, \dots, s_{4N}이 주어집니다. sis_i는 소 ii가 쏘는 화살 궤적의 기울기입니다. 모든 테스트 케이스의 NN 합은 4⋅1044 \cdot 10^4을 넘지 않습니다.

출력

가장 멀리 떨어진 소들 사이 거리의 최솟값을 출력합니다. 소들이 항상 실패하면 −1-1을 출력합니다.

예제1

  1. 예제 1

    입력
    3
    2 1
    1 3 6
    4 6 3
    1 -1 2 -2 3 -3 4 -4
    2 1
    1 3 6
    4 6 3
    1 1 2 2 3 3 4 4
    2 1
    1 3 3
    4 6 3
    1 -1 2 -2 3 -3 4 -4
    
    예상 출력
    17
    -1
    11