파일 업로드

줄 찾기 게임

profile
실행 시간 제한메모리 제한
1 초128 MB
📃 해결할 문제

1...N까지 번호가 매겨진 N (1 <= N <= 20)명의 학생들이 선생님과 함께 특별한 게임을 하려고 합니다. 

학생들이 한 줄로 정렬 후, 선생님에게 줄 번호가 무엇인지 물어봅니다. 

선생님은 그들에게 줄 번호를 알려주면, 학생들은 그 줄 번호를 듣고 줄을 다시 배열해야 합니다.

줄 번호는 사전순으로 모든 순열을 번호매기는 방식으로 할당됩니다.

예를 들어:

선생님은 5명의 학생과 게임하며, 그들에게 3번 줄 번호를 제공합니다.
오름차순 사전순으로 나열된 줄의 순열:
1번: 1 2 3 4 5
2번: 1 2 3 5 4
3번: 1 2 4 3 5
따라서, 학생들은 1 2 4 3 5라는 학생 줄에 줄을 맞춥니다.

학생들이 반대로 "1 2 5 3 4"라는 구성으로 서 있으면, 선생님에게 그들의 줄 번호가 무엇인지 묻습니다.

리스트를 계속하면:

4번 : 1 2 4 5 3
5번 : 1 2 5 3 4
선생님은 이 답이 5라는 것을 알 수 있습니다.

선생님과 학생들은 게임을 하기 위해 여러분의 도움이 필요합니다. 
도움이 필요한 K (1 <= K <= 10,000)개의 쿼리가 있고, 쿼리 i는 두 부분으로 구성됩니다: C_i는 커맨드로, 'P' 또는 'Q'입니다.

C_i가 'P'인 경우, 쿼리의 두 번째 부분은 줄 번호인 하나의 정수 A_i (1 <= A_i <= N!)일 것입니다. 

줄 번호에 따라 선생님이 학생들에게 올바른 학생 줄에 줄을 서도록 요구할 것입니다.

C_i가 'Q'인 경우, 쿼리의 두 번째 부분은 N개의 서로 다른 정수 B_ij (1 <= B_ij <= N)일 것입니다. 

이것은 학생 줄을 나타냅니다. 학생들이 선생님에게 줄 번호를 찾아보라고 요구할 것입니다.

💻 입력
  • 1번째 줄: 두 개의 공백으로 구분된 정수: N과 K
  • 2번째 줄..2*K+1번째 줄 : 2*i번째 줄과 2*i+1번째 줄은 각각 하나의 쿼리를 포함합니다.
    2*i번째 줄은 하나의 문자를 포함합니다: 학생들이 줄을 서고 선생님에게 줄 번호를 물어보는 경우 'Q', 선생님이 학생들에게 줄 번호를 주는 경우 'P'입니다.

2*i번째 줄이 'Q'인 경우, 2*i+1번째 줄에는 학생의 줄을 나타내는 N개의 공백으로 구분된 정수 B_ij가 포함됩니다. 2*i번째 줄이 'P'인 경우, 2*i+1번째 줄에는 문제를 해결하기 위한 줄 번호인 단일 정수 A_i가 포함됩니다.

🖨️ 출력
  • 1번째 줄..K번째 줄 : i번째 쿼리에 대한 답이 포함됩니다.

입력의 2*i번째 줄이 'Q'인 경우, 이 줄에는 학생의 줄 번호를 나타내는 단일 정수가 포함됩니다. 이는 입력의 2*i+1번째 줄에 해당합니다.

입력의 2*i번째 줄이 'P'인 경우, 이 줄에는 N개의 공백으로 구분된 정수가 포함됩니다. 이 정수들은 2*i+1번째 줄의 학생의 줄을 나타냅니다.


💻 예제 입력 1
5 2
P
3
Q
1 2 5 3 4
🖨️ 예제 출력 1
1 2 4 3 5
5

출처: USACO 2011 February Silver 1