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>
//#include<stdlib.h>
//#include<string.h>

int main(void){

  int num;
  int value[100000];
  int kari1[50000],kari2[50000];
  int max=0;;
  int i=0;
  int j=0;
  int tmp;
  int total=0;

  scanf("%d",&num);

  for(i=0;i<num;i++)scanf("%d",&value[i]);

  for(i=0;i<num-1;i++){
for(j=i+i;j<num;j++){
if(value[i]<value[j]){
  tmp=value[i];
  value[i]=value[j];
  value[j]=tmp;
}}}

if(num%2==0){
  for(i=0;i<(num+1)/2;i++){
    kari1[i]=value[i];

  }
  for(i=0;i<num/2;i++)kari2[i]=value[num-1-i];

  total+=value[0]-value[num/2];

  for(i=0;i<(num+1)/2;i++){
    total+=kari1[i]-kari2[i];

  }
  for(i=0;i<num/2;i++)total+=kari1[i+1]-kari2[i];

}
else{
for(i=0;i<(num-1)/2;i++){
    kari1[i]=value[i];
    kari2[i]=value[num-1-i];
  }

  total+=value[0]-value[(num-1)/2];

  for(i=0;i<(num-1)/2;i++){
    total+=kari1[i]-kari2[i];
  }
  for(i=0;i<((num-1)/2)-1;i++)total+=kari1[i+1]-kari2[i];

}


printf("%d",total);
return 0;
}