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

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

전기 회로의 결선 (Circuit)

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

요약
크기 n인 순열 a와 정수 k가 주어질 때 b^k = a를 만족하는 순열 b가 존재하는지 판별하고, 존재하면 그런 b 하나를 출력한다.
난이도

보통10점 중 7점

유형
수학, 조합론, 구현, 정수론
정답자
아직 제출이 없습니다

문제

nn개의 입력과 nn개의 출력을 가진, 다음 그림과 같은 IC(집적 회로)를 생각한다. nn개의 입력에는 왼쪽부터 1,2,…,n1, 2, \ldots, n의 번호가 붙어 있다. 마찬가지로 nn개의 출력에도 왼쪽부터 1,2,…,n1, 2, \ldots, n의 번호가 붙어 있다.

이 IC에서는 nn개의 입력 각각이 그대로 nn개의 출력이 되어 나오지만, 어떤 입력이 어떤 출력에 대응하는지는 알 수 없다. IC는 출력 1,…,n1, \ldots, n에 대응하는 입력의 번호를 나열하는 것으로 기술한다.

예를 들어 n=3n = 3일 때 다음 6종류의 IC가 존재한다.

여기서 IC (2,3,1)(2, 3, 1)을 5개 직렬로 연결하면 다음 그림과 같이 처음의 입력 3,1,23, 1, 2가 각각 마지막 출력 1,2,31, 2, 3에 대응하므로, 결국 IC (3,1,2)(3, 1, 2)와 같은 동작을 하게 된다.

정수 nn (1≤n≤100001 \le n \le 10000), kk (1≤k≤100001 \le k \le 10000)와 11부터 nn까지의 서로 다른 정수의 열 a1,…,ana_1, \ldots, a_n이 주어졌을 때, 같은 종류의 IC를 kk개 직렬로 연결하여 IC (a1,…,an)(a_1, \ldots, a_n)과 같은 동작을 시킬 수 있는지 판정하고, 가능한 경우 목적을 달성할 수 있는 IC를 출력하는 프로그램을 작성하라. 조건에 맞는 IC가 여러 개 존재할 때는 어느 IC를 출력해도 좋다.

입력

입력은 n+1n + 1행으로 이루어진다.

1행에는 정수 nn과 kk가 공백으로 구분되어 쓰여 있다.

i+1i + 1행 (1≤i≤n1 \le i \le n)에는 정수 aia_i가 쓰여 있다.

출력

프로그램은 결과를 표준 출력에 출력한다.

같은 종류의 IC를 kk개 직렬로 연결하여 IC (a1,…,an)(a_1, \ldots, a_n)과 같은 동작을 시킬 수 있는 경우, 1행부터 nn행까지 nn행에 조건을 만족하는 IC를 기술한다. 즉, 1≤i≤n1 \le i \le n에 대하여 ii행에는 IC의 출력 ii에 대응하는 입력의 번호를 쓴다.

같은 종류의 IC를 kk개 직렬로 연결하여 IC (a1,…,an)(a_1, \ldots, a_n)과 같은 동작을 시키는 것이 불가능한 경우, 00이라고 쓴 1행만을 출력한다.

예제2

  1. 예제 1

    입력
    3 5
    3
    1
    2
    
    예상 출력
    2
    3
    1
    
  2. 예제 2

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