아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

직선

시간 제한1초메모리 제한128 MB

요약
두 직선과 한 정수점이 주어질 때, 같은 영역에 있으면서 교점에 가장 가까운 정수점을 사전순으로 가장 작게 찾는다.
난이도

어려움10점 중 8점

유형
기하, 수학, 정수론, 이분 탐색
정답자
아직 제출이 없습니다

문제

여섯 개의 정수 A1,B1,C1,A2,B2,C2A_1, B_1, C_1, A_2, B_2, C_2 가 주어지며, A1B2≠A2B1A_1 B_2 \neq A_2 B_1 을 만족한다. 이 수들은 한 점에서 만나는 두 직선의 계수이다.

  • l1:A1x+B1y+C1=0l_1: A_1 x + B_1 y + C_1 = 0
  • l2:A2x+B2y+C2=0l_2: A_2 x + B_2 y + C_2 = 0

두 직선은 평면을 네 개의 영역으로 나눈다. 각 영역은 그 영역 내부에 있는(즉 두 직선 위에 있지 않은) 정수 좌표 점 하나로 나타낼 수 있다. 그러한 정수 점 (a,b)(a, b) 하나가 주어진다. (a,b)(a, b) 와 같은 영역에 속하는 모든 정수 점 중에서, 두 직선 l1l_1 과 l2l_2 의 교점까지의 유클리드 거리가 가장 짧은 점을 구하여라.

입력

첫째 줄에 l1l_1 의 계수인 세 정수 A1,B1,C1A_1, B_1, C_1 이 공백으로 구분되어 주어진다. 둘째 줄에 l2l_2 의 계수인 세 정수 A2,B2,C2A_2, B_2, C_2 가 주어지며, A1B2≠A2B1A_1 B_2 \neq A_2 B_1 이 보장된다. 셋째 줄에는 한 영역을 나타내는 점의 좌표인 두 정수 a,ba, b 가 주어진다. 점 (a,b)(a, b) 는 어느 직선 위에도 있지 않다. 입력에 주어지는 모든 정수 xx 는 −2100000000<x<2100000000-2100000000 < x < 2100000000 을 만족한다.

출력

두 정수 cc 와 dd 를 공백으로 구분하여 출력한다. 이는 (a,b)(a, b) 와 같은 영역에 속하면서 l1l_1 과 l2l_2 의 교점까지의 거리가 가장 짧은 정수 점의 좌표이다. 그러한 점이 여러 개라면, 사전순으로 가장 작은 점 하나만 출력한다. 즉 cc 가 가장 작은 점을, cc 가 같다면 그중 dd 가 가장 작은 점을 출력한다.

힌트

두 직선은 평면을 네 개의 영역으로 나누며, 점 (a,b)(a, b) 는 그중 하나를 지정한다. 답은 그 영역에서 교점에 가장 가까운 정수 점이다.

예제3

  1. 예제 1

    입력
    1 -1 1
    2 -3 1
    5 4
    
    예상 출력
    2 2
    
  2. 예제 2

    입력
    1 0 0
    0 1 0
    5 7
    
    예상 출력
    1 1
    
  3. 예제 3

    입력
    1 0 -2
    0 1 -3
    10 10
    
    예상 출력
    3 4