도형 교차 판별

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

요약
정사각형, 직사각형, 선분, 삼각형, 다각형을 최대 26개까지 입력받아, 각 도형의 경계가 닿거나 교차하는 다른 도형을 모두 찾아 출력한다.
난이도

보통10점 중 7점

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

문제

한 디자인 도구는 로고를 여러 기하 도형의 모음으로 그리며, 이 도형들은 나중에 특수 형광 소재로 잘라내어 만듭니다. 재단이 제대로 되려면 한 그림 안의 도형들이 서로 교차하지 않아야 합니다. 그러나 일부 로고에는 교차하는 도형이 들어 있으므로, 이를 찾아내야 합니다.

여러 기하 도형이 주어질 때, 각 도형이 어떤 다른 도형들과 교차하는지 판별하세요. 오직 도형의 윤곽선(경계)만을 고려합니다. 즉, 두 도형은 그 윤곽선이 적어도 한 점을 공유할 때(서로 가로지르거나 맞닿을 때)에만 교차한다고 봅니다. 특히 한 도형이 다른 도형의 내부에 완전히 들어 있고 두 윤곽선이 맞닿지 않는다면, 이는 교차가 아닙니다.

입력

입력은 여러 개의 그림으로 이루어집니다. 각 그림은 최대 26개의 도형을 한 줄에 하나씩 기술합니다. 각 줄은 그림 안에서 도형을 유일하게 식별하는 대문자 하나로 시작하고, 이어서 도형의 종류와 두 개 이상의 점이 오며, 모든 항목은 최소 한 칸 이상의 공백으로 구분됩니다. 가능한 도형의 종류는 다음과 같습니다.

  • square — 정사각형의 마주 보는 두 꼭짓점(대각선의 양 끝점)을 나타내는 서로 다른 두 점.
  • rectangle — 세 점. 첫 번째 점에서 두 번째 점을 잇는 선분과 두 번째 점에서 세 번째 점을 잇는 선분이 이루는 두 번째 점에서의 각은 항상 직각입니다.
  • line — 서로 다른 두 끝점으로 주어지는 선분.
  • triangle — 한 직선 위에 있지 않음이 보장되는 세 점.
  • polygon — 정수 NN (3≤N≤203 \le N \le 20) 뒤에 다각형의 꼭짓점을 시계 방향 또는 반시계 방향 순서로 나열한 NN개의 점. 다각형은 자기 자신과 교차하지 않으며 모든 변의 길이는 0이 아닙니다.

모든 점은 정수 좌표 XX와 YY를 쉼표로 구분하여 괄호로 감싼 (X,Y) 형태로 주어집니다. 모든 좌표는 ∣X∣,∣Y∣≤10000|X|, |Y| \le 10000을 만족합니다.

각 그림의 기술은 하이픈 하나(-)만 있는 줄로 끝납니다. 마지막 그림 다음에는 마침표 하나(.)만 있는 줄이 옵니다.

출력

각 그림마다 모든 도형에 대해 그 식별자 기준 알파벳 순서로 한 줄씩 출력합니다. 각 줄은 다음 형식 중 하나여야 합니다.

  • X has no intersections — XX가 다른 어떤 도형과도 교차하지 않는 경우.
  • X intersects with A — XX가 정확히 하나의 다른 도형 AA와 교차하는 경우.
  • X intersects with A and B — XX가 정확히 두 개의 다른 도형과 교차하는 경우.
  • X intersects with A, B, ..., and Z — XX가 두 개보다 많은 도형과 교차하는 경우(and 앞에 쉼표가 추가로 붙는 점에 유의하세요).

나열되는 식별자들은 교차하는 도형들을 알파벳 순으로 정렬한 것입니다.

연속한 두 그림의 출력 사이에는 빈 줄을 하나 넣어 구분합니다.

예제2

  1. 예제 1

    입력
    A square (1,2) (3,2)
    F line (1,3) (4,4)
    W triangle (3,5) (5,5) (4,3)
    X triangle (7,2) (7,4) (5,3)
    S polygon 6 (9,3) (10,3) (10,4) (8,4) (8,1) (10,2)
    B rectangle (3,3) (7,5) (8,3)
    -
    B square (1,1) (2,2)
    A square (3,3) (4,4)
    -
    .
    
    예상 출력
    A has no intersections
    B intersects with S, W, and X
    F intersects with W
    S intersects with B
    W intersects with B and F
    X intersects with B
    
    A has no intersections
    B has no intersections
    
  2. 예제 2

    입력
    A line (0,0) (4,4)
    B line (0,4) (4,0)
    -
    .
    
    예상 출력
    A intersects with B
    B intersects with A