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

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

점 집합의 닮음 판정

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

요약
패턴 점 집합과 최대 20개의 질의 집합이 주어질 때, 각 집합이 회전, 평행이동, 반사, 확대를 거쳐 패턴과 같아질 수 있는지 판정한다.
난이도

보통10점 중 7점

유형
기하, 정렬, 해시맵, 분할 정복
정답자
아직 제출이 없습니다

문제

평면 위의 격자점(두 좌표가 모두 정수인 점)들로 이루어진 집합 하나가 주어지며, 이를 패턴이라고 부른다. 또한 평면 위의 다른 격자점 집합들의 모임도 함께 주어진다.

각 집합이 패턴과 닮음인지, 즉 회전(rotation)·평행이동(translation)·대칭이동(reflection)·크기 변환(dilation)을 적절히 조합하여 패턴과 완전히 똑같은 모양으로 만들 수 있는지 판정하려고 한다.

예를 들어 집합 {(0,0),(2,0),(2,1)}\{(0,0),(2,0),(2,1)\} 은 집합 {(6,1),(6,5),(4,5)}\{(6,1),(6,5),(4,5)\} 과 닮음이지만, 집합 {(4,0),(6,0),(5,−1)}\{(4,0),(6,0),(5,-1)\} 과는 닮음이 아니다.

다음을 수행하는 프로그램을 작성하라.

  • 표준 입력에서 패턴과 조사 대상 집합들의 정보를 읽는다.
  • 각 집합이 패턴과 닮음인지 판정한다.
  • 결과를 표준 출력에 쓴다.

입력

첫째 줄에 패턴을 이루는 점의 개수 kk (1≤k≤25 0001 \le k \le 25\,000)가 주어진다. 이어지는 kk개의 줄에는 각 점의 좌표가 공백 하나로 구분된 두 정수로 주어진다. ii번째 점의 좌표는 xix_i와 yiy_i (−20 000≤xi,yi≤20 000-20\,000 \le x_i, y_i \le 20\,000)이다. 패턴을 이루는 점들은 서로 모두 다르다.

그 다음 줄에는 조사할 집합의 개수 nn (1≤n≤201 \le n \le 20)이 주어진다. 이어서 nn개의 집합에 대한 정보가 주어진다. 각 집합의 정보는 그 집합에 속한 점의 개수 ll (1≤l≤25 0001 \le l \le 25\,000)이 적힌 줄로 시작한다. 그 뒤 ll개의 줄에 각 점의 좌표 xx와 yy (−20 000≤x,y≤20 000-20\,000 \le x, y \le 20\,000)가 공백 하나로 구분된 두 정수로 한 줄에 하나씩 주어진다. 같은 집합에 속한 점들은 서로 모두 다르다.

출력

nn개의 줄을 출력한다. 각 줄은 조사한 집합 하나에 대응한다. ii번째 줄에는, ii번째 집합이 패턴과 닮음이면 TAK(폴란드어로 '예')를, 닮음이 아니면 NIE(폴란드어로 '아니오')를 출력한다.

힌트

예제7

  1. 예제 1

    입력
    3
    0 0
    2 0
    2 1
    2
    3
    4 1
    6 5
    4 5
    3
    4 0
    6 0
    5 -1
    
    예상 출력
    TAK
    NIE
    
  2. 예제 2

    입력
    1
    5 5
    3
    1
    0 0
    1
    100 -3
    2
    1 1
    2 2
    
    예상 출력
    TAK
    TAK
    NIE
    
  3. 예제 3

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

    입력
    4
    0 0
    1 0
    1 1
    0 1
    4
    4
    0 0
    2 0
    2 2
    0 2
    4
    0 0
    1 1
    0 2
    -1 1
    4
    0 0
    2 0
    2 1
    0 1
    4
    0 0
    0 1
    1 1
    1 0
    
    예상 출력
    TAK
    TAK
    NIE
    TAK
    
  5. 예제 5

    입력
    3
    0 0
    4 0
    0 3
    3
    3
    0 0
    0 4
    3 0
    3
    0 0
    8 0
    8 6
    3
    0 0
    5 0
    0 5
    
    예상 출력
    TAK
    TAK
    NIE
    
  6. 예제 6

    입력
    3
    0 0
    2 0
    2 1
    3
    3
    2 1
    0 0
    2 0
    3
    10 10
    14 10
    14 12
    3
    0 0
    2 0
    1 2
    
    예상 출력
    TAK
    TAK
    NIE
    
  7. 예제 7

    입력
    3
    0 0
    1 0
    3 0
    4
    3
    0 0
    2 0
    6 0
    3
    5 5
    6 6
    8 8
    3
    0 0
    2 0
    3 0
    3
    0 0
    1 0
    2 0
    
    예상 출력
    TAK
    TAK
    TAK
    NIE