페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#8145
서브태스크

양궁 연습 1s 1024MB

문제

파리 올림픽이 다가오고, 양궁팀 코치 정올이는 선수들을 훈련시키는 중이다. 그는 2차원 좌표 평면에서 다음과 같은 훈련을 준비했다.

  • N개의 축에 평행한 직사각형 표적과 4N명의 양궁선수가 있다. 각 양궁선수는 서로 다른 표적의 꼭짓점에 배정되어야 한다.

  • i번째 순간(1 ≤ i ≤ N)마다 다음이 발생한다:

    1. i번 표적이 나타난다.

    2. 해당 표적의 꼭짓점에 배정된 4명의 양궁선수가 해당 꼭짓점을 겨냥해 화살을 쏜다.

    3. 만약 양궁선수의 화살이 표적 꼭짓점에 도달하기 전에 표적 내부를 관통하거나 놓친다면, 양궁선수들은 훈련에 실패한다.

    4. i번째 표적은 다음 표적을 위해 사라진다.

각 양궁선수는 y-축(x = 0) 위에 위치하며, 각 표적은 다음과 같은 좌표를 가진 직사각형이다:

  • 표적 i의 왼쪽 아래 좌표는 (X_1, y_1^{(i)}), 오른쪽 위 좌표는 (x_2^{(i)}, y_2^{(i)})이다.

  • 좌표는 다음 조건을 만족한다: 1 \leq X_1 < x_2^{(i)} \leq 10^9; 1 \leq y_1^{(i)} < y_2^{(i)} \leq 10^9
    (참고: 모든 표적의 X_1은 동일하다.)

또한 각 양궁선수는 특정한 "집중" 각도를 유지해야 한다. 따라서 각 양궁선수는 특정 기울기로 화살을 쏜다. 양궁선수의 화살 궤적은 s_i로 설명되며,
s_i는 양궁선수 i의 화살 궤적의 기울기를 나타낸다 (0 < |sᵢ| < 10^9).

양궁팀 코치 정올이는 양궁선수들의 기술을 세심하게 관찰하고 싶어 하므로, 가장 멀리 떨어져 있는 양궁선수들 간의 거리를 최소화하고자 한다. 양궁선수를 각 표적 꼭짓점에 최적으로 배치했을 때, y-축 위에서 가장 멀리 떨어진 양궁선수들 간의 최소 거리를 구하거나, 혹은 양궁선수들이 훈련에 성공하는 경우가 없는지를 판단해야 한다.


입력

첫 번째 줄에는 테스트 케이스의 수 T가 주어진다 (1 \leq T \leq 10).
각 테스트 케이스는 다음과 같이 구성된다:

  1. 첫 번째 줄에는 두 개의 정수 NX_1이 주어진다. (1 \le N \le 4 \cdot 10^4)

    • N은 표적의 개수, X_1은 표적의 왼쪽 가장자리 x 좌표이다.

  2. 이후 N개의 줄에는 각 줄마다 세 개의 정수 y_1^{(i)}, y_2^{(i)}, x_2^{(i)}가 주어진다.

    • y_1^{(i)}: 표적의 하단 y 좌표

    • y_2^{(i)} 표적의 상단 y 좌표

    • x_2^{(i)}: 표적의 오른쪽 x 좌표

  3. 마지막 줄에는 4N개의 정수 s_1, s_2, …,\ s_{4N}이 주어진다.

    • s_i는 양궁선수 i의 화살 궤적의 기울기이다.


출력

각 테스트 케이스에 대해 양궁선수들이 가장 멀리 떨어져 있는 최소 거리를 출력하거나, 양궁선수들이 훈련에 성공하는 경우가 없다면 -1을 출력한다.


부분문제

번호 점수 조건
#140점

모든 1 \le i \le 4 \times N을 만족하는 i에 대한 |S_i|가 같음이 보장된다

#235점

모든 테스트 케이스에 대하여 N의 합의 1000 이하임이 보장된다.

#325점

추가 제약 조건 없음


예제

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

첫 번째 테스트 케이스에 대한 최적 배치는 다음과 같다:

표적 꼭짓점에 대한 양궁선수 배정:

  • 양궁선수 1: (6, 1)

  • 양궁선수 2: (6, 3)

  • 양궁선수 3: (3, 4)

  • 양궁선수 4: (3, 6)

  • 양궁선수 5: (1, 4)

  • 양궁선수 6: (1, 3)

  • 양궁선수 7: (1, 6)

  • 양궁선수 8: (1, 1)

이 배치를 통해 양궁선수들이 위치할 y-좌표:

  • 양궁선수 1: y=−5y = -5y=−5

  • 양궁선수 2: y=9y = 9y=9

  • 양궁선수 3: y=−2y = -2y=−2

  • 양궁선수 4: y=12y = 12y=12

  • 양궁선수 5: y=1y = 1y=1

  • 양궁선수 6: y=6y = 6y=6

  • 양궁선수 7: y=2y = 2y=2

  • 양궁선수 8: y=5y = 5y=5

최적 거리 계산:

가장 멀리 떨어진 양궁선수 간의 거리는 y=12y = 12y=12y=−5y = -5y=−5 사이의 거리로 계산된다.

12 - (-5) = 17

따라서 최소 거리는 17이다.

두 번째 테스트 케이스가 불가능한 이유:

표적 1의 우상단 꼭짓점 (6,3)을 향해 화살을 쏘는 것이 불가능하다.
그 이유는, 해당 꼭짓점을 겨냥하는 화살이 표적 내부를 관통하지 않고 도달하는 방법이 없기 때문이다. 따라서 양궁선수들은 훈련에 실패할 수밖에 없다.



출처

USACO 2024 February Silver 1번

로그인해야 코드를 작성할 수 있어요.