순열의 사전 순 위치

면접 대비

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

요약
n과 0부터 n-1까지 순열이 주어지면 사전식 순서에서 1부터 시작하는 위치를 구합니다.
난이도

보통10점 중 4점

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

문제

어떤 집합의 순열은 그 집합의 원소가 각각 정확히 한 번씩 나오는 수열이다. 예를 들어 수열 3201은 집합 {0,1,2,3}\{0, 1, 2, 3\}의 순열이고, 3이 첫 번째, 2가 두 번째, 0이 세 번째, 1이 마지막에 온다.

두 순열이 처음으로 달라지는 자리를 비교하면 순열을 사전 순으로 늘어놓을 수 있다. 그 자리의 수가 작은 쪽이 앞에 온다. 3201은 3210보다 앞에 온다. 두 순열이 처음 달라지는 세 번째 자리에서 앞의 것은 0이고 뒤의 것은 그보다 큰 1이기 때문이다.

n=4n = 4이면 사전에 항목이 24개 들어가고 다음 순서가 된다.

0123, 0132, 0213, 0231, 0312, 0321, 1023, 1032, 1203, …, 3201, 3210

정수 nn (1≤n≤131 \le n \le 13)과 집합 {0,1,2,…,n−1}\{0, 1, 2, \dots, n-1\}의 순열이 주어진다. 이 순열이 사전에서 몇 번째에 있는지 구하시오.

힌트: 사전의 크기는 1×2×3×⋯×n1 \times 2 \times 3 \times \dots \times n이므로, nn이 13에 가까우면 사전을 전부 만드는 방법은 너무 느리다.

입력

입력은 두 줄이다.

첫째 줄에 정수 nn이 주어진다.

둘째 줄에 집합 {0,1,2,…,n−1}\{0, 1, 2, \dots, n-1\}의 순열이 공백으로 구분되어 주어진다.

출력

순열이 사전에서 몇 번째인지를 정수 하나로 출력한다. 위치는 1부터 세므로, 가장 앞에 오는 순열 0,1,2,…,n−10, 1, 2, \dots, n-1의 위치는 1이다.

예제4

  1. 예제 1

    입력
    4
    3 2 0 1
    
    예상 출력
    23
    
  2. 예제 2

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

    입력
    9
    8 7 5 6 4 0 3 1 2
    
    예상 출력
    362141
    
  4. 예제 4

    입력
    13
    4 0 6 7 2 12 11 8 10 3 1 9 5
    
    예상 출력
    1932053504