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 C (GCC 5.4.1) (judge verdict: Wrong Answer)

#include<stdio.h>

void SortBubble(int array[],int n)
{
    int i,j,temp;

    for (i = 0;i < n - 1;i++) {
        for (j = 0;j < n - 1;j++) {
            if (array[j + 1] < array[j]) {
                temp = array[j];array[j] = array[j + 1];array[j + 1] = temp;
            }
        }
    }
}
 
int main(){
    int N;
    scanf("%d",&N);
    int A[N];
    for(int i = 0;i < N;i++)scanf("%d",&A[i]);

    SortBubble(A,N);
    int sum = 0;
    for(int i = 0;i < N - 1;i++){
        switch(i % 3){
            case 0:
                sum += A[N - 1 - i/3] - A[(N-1)/2 - i/3];
                break;
            case 1:
                sum += A[N - 1 - i/3] - A[i/3];
                break;
            case 2:
                sum += A[(N-1)/2 + i/3 + 1] - A[i/3];
                break;  
        }
    }
    printf("%d\n",sum);
    return 0;
}