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: Accepted)

import java.util.Scanner;
import java.util.Arrays;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int[] a = new int [N];
		for (int i = 0; i < N; i++) {
			a[i] = sc.nextInt();
		}
		Arrays.sort(a);
		long total = 0;
		int cen = (N-1)/2;
		if (N == 2)
			total = a[1] - a[0];
		
		else if (N % 2 == 0) {
			total += a[cen+1] - a[cen];
			for (int i = 0; i < cen; i++) {
				total += 2* (a[N-1-i] - a[i]);
			}
		}
		else {
		int total1 = 0;
		int total2 = 0;
		for ( int i = 0; i < cen-1; i++) {
			total += 2 * (a[N-1-i] - a[i]);
		}
		total1 += a[cen+1] + a[cen+1] - a[cen] - a[cen-1];
		total2 += a[cen] + a[cen+1] - a[cen-1] - a[cen-1];
		total += Math.max(total1, total2);
		}
		
		System.out.println(total);
		
	}
}