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

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

눈송이

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

요약
팔 길이 여섯 개로 이루어진 눈송이 최대 100,000개가 주어질 때, 회전이나 뒤집기로 같아지는 두 눈송이가 있는지 판별한다.
난이도

보통10점 중 5점

유형
해시맵, 문자열, 정렬, 구현
정답자
아직 제출이 없습니다

문제

어떤 두 눈송이도 서로 같지 않다는 말을 들어 본 적이 있을 것이다. 이 말이 정말 사실인지 판별하는 프로그램을 작성하라. 프로그램은 여러 눈송이의 정보를 읽어들여, 서로 같을 수 있는 눈송이 쌍이 존재하는지 찾는다.

각 눈송이에는 여섯 개의 팔이 있다. 각 눈송이마다 여섯 팔의 길이가 주어진다. 대응하는 팔들의 길이가 모두 같은 두 눈송이는 서로 같을 수 있는 것으로 판정한다.

두 눈송이가 같다고 판정되려면, 한 눈송이의 팔 길이를 어떤 팔에서 시작해 한 방향(시계 또는 반시계)으로 차례로 읽었을 때 다른 눈송이와 완전히 일치해야 한다. 즉, 한 눈송이의 팔 길이 수열을 회전(cyclic rotation)하거나, 뒤집은 뒤 회전하여 다른 눈송이의 수열과 같아지면 두 눈송이는 같은 것이다.

입력

첫째 줄에 눈송이의 개수 nn이 주어진다 (0<n≤1000000 < n \le 100000). 이어서 nn개의 줄에 각 눈송이의 정보가 주어진다. 각 줄에는 여섯 개의 정수가 주어지며, 이는 눈송이 여섯 팔의 길이다. 각 정수는 00 이상 1000000010000000 미만이다. 팔의 길이는 눈송이를 한 방향(시계 또는 반시계)으로 돌면서 나오는 순서대로 주어지지만, 어느 팔에서 시작해도 무방하다. 예를 들어 같은 눈송이를 1 2 3 4 5 6으로도, 4 3 2 1 6 5로도 나타낼 수 있다.

출력

모든 눈송이가 서로 다르면 다음을 출력한다:

No two snowflakes are alike.

서로 같을 수 있는 눈송이 쌍이 하나라도 있으면 다음을 출력한다:

Twin snowflakes found.

예제3

  1. 예제 1

    입력
    2
    1 2 3 4 5 6
    4 3 2 1 6 5
    
    예상 출력
    Twin snowflakes found.
    
  2. 예제 2

    입력
    1
    1 2 3 4 5 6
    
    예상 출력
    No two snowflakes are alike.
    
  3. 예제 3

    입력
    2
    1 2 3 4 5 6
    3 4 5 6 1 2
    
    예상 출력
    Twin snowflakes found.