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

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

격자

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

요약
점 n개가 주어질 때, 같은 간격으로 반복되는 가로선과 세로선으로 이루어진 격자와 직선이 주어진 점들과 정확히 일치하는 교점을 갖도록 할 수 있는지 판정한다.
난이도

어려움10점 중 8점

유형
기하, 수학, 구현, 완전 탐색
정답자
아직 제출이 없습니다

문제

제럴드는 종이 한 장에 직사각형 격자를 그리느라 몇 시간을 보냈다. 먼저 이웃한 두 선의 간격이 모두 dxdx로 같은 세로선을 여러 개 그었고, 이어서 이웃한 두 선의 간격이 모두 dydy로 같은 가로선을 여러 개 그었다. dxdx와 dydy는 모두 양수이고, 그은 선은 모두 끝없이 뻗는 직선이다.

제럴드가 차를 마시며 쉬는 동안 동생 마이크가 들어와 종이에 직선 하나를 긁어 놓았다. 화가 난 제럴드는 이상한 것을 전부 지우라고 했다. 마이크는 지우개로 자국을 거의 다 지웠지만, 자기 직선과 격자가 만나는 점은 미처 보지 못했다. 그 점은 지운 뒤에도 알아볼 만큼 진하게 남았다.

마이크는 남은 점을 공책에 옮겨 적었고, 두 형제는 이 목록이 맞을 수 있는지를 두고 다투고 있다.

격자는 정수 x1≤x2x_1 \le x_2, dx>0dx > 0, y1≤y2y_1 \le y_2, dy>0dy > 0으로 정해지며, x2−x1x_2 - x_1은 dxdx의 배수이고 y2−y1y_2 - y_1은 dydy의 배수이다. 격자는 세로선 x=x1,x1+dx,…,x2x = x_1, x_1 + dx, \ldots, x_2와 가로선 y=y1,y1+dy,…,y2y = y_1, y_1 + dy, \ldots, y_2로 이루어진다. 마이크의 직선은 임의의 직선이다. 어떤 격자와 어떤 직선의 공통점이 주어진 점 전체와 정확히 일치하면 목록이 맞다고 한다. 이때 마이크의 직선은 격자선과 겹칠 수 없다. 겹치면 공통점이 무한히 많아지기 때문이다.

목록이 맞을 수 있는지 판정하라.

입력

첫째 줄에 점의 개수 nn이 주어진다 (3≤n≤100 0003 \le n \le 100\,000).

다음 nn개 줄에 점 하나의 좌표 xix_i와 yiy_i가 한 줄에 하나씩 주어진다. 각 좌표의 절댓값은 10910^9 이하이다.

주어지는 점은 모두 서로 다르다.

출력

조건을 만족하는 격자와 직선이 존재하면 YES를, 존재하지 않으면 NO를 출력한다.

예제3

  1. 예제 1

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

    입력
    3
    0 0
    1 1
    2 3
    
    예상 출력
    NO
    
  3. 예제 3

    입력
    4
    5 8
    5 -1
    5 5
    5 2
    
    예상 출력
    YES