Merge Sort
Write a program of a Merge Sort algorithm implemented by the following pseudocode. You should also report the number of comparisons in the Merge function.Merge(A, left, mid, right)
n1 = mid - left;
n2 = right - mid;
create array L[0...n1], R[0...n2]for i =0 to n1-1do L[i]= A[left + i]for i =0 to n2-1do R[i]= A[mid + i]
L[n1]= SENTINEL
R[n2]= SENTINEL
i =0;
j =0;for k = left to right-1if L[i]<= R[j]
then A[k]= L[i]
i = i +1else A[k]= R[j]
j = j +1
Merge-Sort(A, left, right){if left+1< right
then mid =(left + right)/2;
call Merge-Sort(A, left, mid)
call Merge-Sort(A, mid, right)
call Merge(A, left, mid, right)
Input
In the first line n is given. In the second line, n integers are given.
Output
In the first line, print the sequence S. Two consequtive elements should be separated by a space character.
In the second line, print the number of comparisons.
Constraints
n ≤ 5000000 ≤ an element in S ≤ 109
Sample Input 11085926371104
Sample Output 11234567891034