직교 다각형

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

요약
정수 좌표를 가진 n개의 점이 주어질 때, 이 점들을 꼭짓점으로 하는 단순 직교 다각형을 만들 수 있는지 판정하고, 가능하면 둘레를, 불가능하면 -1을 출력한다.
난이도

보통10점 중 7점

유형
기하, 정렬, 구현
정답자
아직 제출이 없습니다

문제

평면 위에 정수 좌표를 갖는 점 nn개가 주어진다. 이 점들을 꼭짓점으로 하는 단순 직교 다각형(simple rectilinear polygon)을 만들 수 있는지 판별하여라.

직교 다각형은 다음 조건을 모두 만족한다.

  • 꼭짓점이 44개 이상이다.
  • 모든 변은 수평(가로) 또는 수직(세로)이다.
  • 각 꼭짓점은 정확히 하나의 수평 변과 하나의 수직 변의 끝점이다.
  • 단순 다각형이다. 즉, 끝점을 공유하는 이웃한 두 변을 제외하면 어떤 두 변도 서로 교차하지 않으며, 다각형 내부에 구멍이 없다.

주어진 모든 점을 남김없이 꼭짓점으로 사용해야 한다. 조건을 만족하는 다각형이 존재하면 그 다각형의 둘레(모든 변의 길이의 합)를, 존재하지 않으면 −1-1을 출력하여라.

입력

첫째 줄에 테스트 케이스의 개수가 정수로 주어진다.

각 테스트 케이스는 점의 개수 nn (4≤n≤1000004 \le n \le 100000)으로 시작하고, 이어서 각 점의 xx좌표와 yy좌표를 나타내는 정수 쌍이 nn개 주어진다.

출력

각 테스트 케이스마다 한 줄씩 출력한다. 조건을 만족하는 직교 다각형이 존재하면 그 다각형의 둘레 길이를 정수로 출력하고, 존재하지 않으면 −1-1을 출력한다.

예제3

  1. 예제 1

    입력
    1
    8
    1 2
    1 0
    2 1
    2 2
    3 2
    3 1
    4 0
    4 2
    
    예상 출력
    12
    
  2. 예제 2

    입력
    1
    4
    0 0
    2 0
    2 3
    0 3
    
    예상 출력
    10
    
  3. 예제 3

    입력
    1
    4
    0 0
    1 0
    1 1
    0 1
    
    예상 출력
    4