Problem:
Score : 400 points

Problem Statement

You are given N integers; the i-th of them is A_i.
Find the maximum possible sum of the absolute differences between the adjacent elements after arranging these integers in a row in any order you like.

Constraints

2 \leq N \leq 10^5

1 \leq A_i \leq 10^9

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N
A_1
:
A_N

Output

Print the maximum possible sum of the absolute differences between the adjacent elements after arranging the given integers in a row in any order you like.

Sample Input 1

5
6
8
1
2
3

Sample Output 1

21

When the integers are arranged as 3,8,1,6,2, the sum of the absolute differences between the adjacent elements is |3 - 8| + |8 - 1| + |1 - 6| + |6 - 2| = 21. This is the maximum possible sum.

Sample Input 2

6
3
1
4
1
5
9

Sample Output 2

25

Sample Input 3

3
5
5
1

Sample Output 3

8

Solution in Java8 (OpenJDK 1.8.0) (judge verdict: Wrong Answer)

import java.util.*;

public class Main {
	Scanner sc = new Scanner(System.in);
	void doIt() {
		int n = sc.nextInt();
		int a[] = new int[n];
		int cnt[] = new int[n];
		for(int i = 0; i < n; i++) {
			a[i] = sc.nextInt();
		}
		Arrays.fill(cnt, 0);
		Arrays.sort(a);
		int mid = n / 2;
		if(n % 2 != 0) mid++;
		int[] b = Arrays.copyOfRange(a, 0, mid);
		int move = mid;
		for(int i = 0; i < n / 2; i++) a[i] = a[i + move];
		for(int i = 0; i < b.length; i++) a[i + n / 2] = b[i];
		int l = n / 2 - 2, r = n / 2 + 1;
		while(l >= 0 && r < n) {
			//System.out.println(Arrays.toString(a));
			int work = a[l];
			a[l] = a[r];
			a[r] = work;
			r += 2;
			l -= 2;
		}
		int ans = 0;
		for(int i = 1; i < n; i++) {
			ans += Math.abs(a[i] - a[i - 1]);
		}
		//System.out.println(Arrays.toString(a));
		System.out.println(ans);
	}

	Main(){doIt();}
	public static void main(String[] args) {
		new Main();
	}

}