시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
2 초 128 MB 82 40 27 46.552%

문제

랜덤 소트는 어떤 순열이 주어졌을 때, i<j이면서 A[i] > A[j]인 임의의 쌍을 교환하는 것이다.

입력으로 주어진 순열을 오름차순으로 정렬할 때, 필요한 교환의 횟수의 기댓값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 순열의 크기 N이 주어진다. 둘째 줄에 순열에 들어있는 수 N개가 주어진다. 이 수는 모두 1보다 크거나 같고, N보나 작거나 같으며, 같은 수는 2번 이상 주어지지 않는다. 또, N은 8보다 작거나 같은 자연수이다.

출력

첫째 줄에 필요한 교환 횟수의 기댓값을 출력한다. 정답과의 절대/상대 오차는 10-6까지 허용한다.

예제 입력

3
1 3 2

예제 출력

1.0

예제 입력 2

4
4 3 2 1

예제 출력 2

4.066666666666666

예제 입력 3

1
1

예제 출력 3

0.0

예제 입력 4

6
2 5 1 6 3 4

예제 출력 4

5.666666666666666

힌트

출처