만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

순열

면접 대비

시간 제한2초메모리 제한1024 MB

요약
역순서 표가 주어질 때, 그 표가 나타내는 순열을 복원하여 사이클 표기법으로 출력합니다.
난이도

보통10점 중 5점

유형
배열, 이분 탐색, 구현
정답자
아직 제출이 없습니다

문제

[n][n]은 집합 {1,2,…,n}\{1, 2, \ldots, n\}을 뜻한다. 차수가 nn인 순열은 집합 [n][n]에서 집합 [n][n]으로 가는 일대일 대응이다. 예를 들어 차수가 77인 순열 π ⁣:[7]→[7]\pi \colon [7] \to [7]을 생각하자. 보통 다음과 같은 표로 나타낸다.

π=(12345673741652).\pi = \begin{pmatrix} 1 & 2 & 3 & 4 & 5 & 6 & 7 \\ 3 & 7 & 4 & 1 & 6 & 5 & 2\end{pmatrix}.

이는 π(1)=3\pi(1) = 3, π(2)=7\pi(2) = 7, π(3)=4\pi(3) = 4 등을 뜻한다. 윗줄은 항상 1 2 3 … n1\ 2\ 3\ \ldots\ n이므로 생략하고 한 줄 표기법으로 순열을 적는다.

π=3 7 4 1 6 5 2.\pi = 3\ 7\ 4\ 1\ 6\ 5\ 2.

사이클 표기법도 널리 쓰인다. 원소 11에서 시작해 그 상 π(1)=3\pi(1) = 3을 구한다. 다음으로 원소 33의 상 π(3)=4\pi(3) = 4를 구한다. 이 과정을 반복하면 결국 원소 11로 돌아온다. 실제로 π(4)=1\pi(4) = 1이다. 따라서 순열 π\pi에는 사이클 (1 3 4)(1\ 3\ 4)가 있다. 그다음에는 아직 어떤 사이클에도 나타나지 않은 가장 작은 수를 골라 같은 과정을 반복한다. 이 경우에는 22이다. 결국 다음을 얻는다.

π=(1 3 4) (2 7) (5 6).\pi = (1\ 3\ 4)\ (2\ 7)\ (5\ 6).

차수가 nn인 순열은 역순 표인 b1 b2 b3 … bnb_1\ b_2\ b_3\ \ldots\ b_n (0≤bi≤n−i0 \leq b_i \leq n-i)로도 나타낼 수 있다. 여기서 bib_i는 한 줄 표기법에서 ii보다 크고 ii의 왼쪽에 나오는 원소의 개수이다. 이 예시의 역순 표는 다음과 같다.

3 5 0 1 2 1 0.3\ 5\ 0\ 1\ 2\ 1\ 0.

모든 순열은 역순 표로 유일하게 나타낼 수 있다. 또한 모든 i∈[n]i \in [n]에 대해 0≤bi≤n−i0 \leq b_i \leq n-i를 만족하는 역순 표 b1 b2 b3 … bnb_1\ b_2\ b_3\ \ldots\ b_n은 올바른 순열을 나타낸다.

역순 표를 입력받아 그에 대응하는 사이클 표기법으로 바꾸는 프로그램을 작성하라.

입력

첫째 줄에 순열의 차수 nn이 주어진다. 둘째 줄에는 올바른 역순 표를 나타내는 정수 nn개가 공백으로 구분되어 주어진다.

출력

역순 표가 나타내는 순열의 사이클 표기법을 한 줄에 출력한다. 각 사이클은 괄호로 묶는다. 사이클 사이는 공백 하나로 구분한다. 사이클 안의 수도 공백 하나로 구분한다. 각 사이클의 맨 앞에는 가장 작은 원소를 둔다. 사이클은 맨 앞 원소의 순서대로 나열한다. 예시를 참고하라.

제한

1≤n≤1051 \leq n \leq 10^5

예제2

  1. 예제 1

    입력
    7
    3 5 0 1 2 1 0
    
    예상 출력
    (1 3 4) (2 7) (5 6)
    
  2. 예제 2

    입력
    6
    4 2 1 1 0 0
    
    예상 출력
    (1 5) (2 3) (4) (6)