1521번

수정 전

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

문제

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

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

  예를 들어, {4, 3, 2, 1}이란 순열이 주어졌을 때는, 평균적으로 4.06666666666666번의 교환이 필요하다. 왤까?
 

입력

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

출력

  첫째 줄에 경우의 수를 출력한다. 소수점 10째자리까지 출력한다. 정답과의 차이가 1e-6이하이면 정답이다.

예제 입력

3 1 3 2

예제 출력

1.0

힌트

수정 후

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

문제

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

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

  예를 들어, {4, 3, 2, 1}이란 순열이 주어졌을 때는, 평균적으로 4.06666666666666번의 교환이 필요하다. 왤까?
 

입력

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

출력

  첫째 줄에 경우의 수를 출력한다. 소수점 10째자리까지 출력한다. 정답과의 차이가 1e-6이하이면 정답이다.

예제 입력

3 1 3 2

예제 출력

1.0

힌트