[BOJ 13726] 랜덤 소트 2

View as PDF

Submit solution

Points: 1
Time limit: 2.0s
Memory limit: 512M

Problem types
Allowed languages
Assembly, Awk, C, C++, Java, Pascal, Perl, Python, Sed, Text

랜덤 소트는 크기가 N인 순열 P를 아래와 같은 알고리즘을 이용해서 정렬하는 방법이다.</p>

function random_sort(permutation P) {
    swaps = 0;
    while (not sorted P) {
        (i, j) = random pair (1 <= i < j <= n)
        swap(P[i], P[j])
        swaps = swaps + 1;
    }
    return swaps;
}

순열 P가 주어졌을 때, random_sort 함수의 리턴값의 기댓값을 구하는 프로그램을 작성하시오.

입력 형식

첫째 줄에 순열의 크기 N (2 ≤ N ≤ 10)이 주어진다.</p>

둘째 줄에 순열이 주어진다.

출력 형식

입력으로 주어진 순열 P를 random_sort 함수로 정렬할 때, 리턴값의 기댓값을 출력한다. 절대/상대 오차는 10-6까지 허용한다.

예제 입력 1

2
2 1

예제 출력 1

1.0000000

예제 입력 2

3
2 1 3

예제 출력 2

5.0000000

예제 입력 3

4
2 3 4 1

예제 출력 3

27.5000000

예제 입력 4

6
2 5 1 3 4 6

예제 출력 4

781.0416667

Comments

There are no comments at the moment.