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 Kotlin (1.0.0) (judge verdict: Wrong Answer)

fun main(args: Array<String>) {
    val n = readLine()!!.toInt()
    var xs = (1..n).map { readLine()!!.toInt() }.sorted().reversed()

    if (n == 2) {
        println(Math.abs(xs.first() - xs.last()))
        return
    }


    val min = xs.last()
    var minCount = xs.count { it == min }

    var list = mutableListOf<Int>()
    for ((i, a) in xs.withIndex()) {
        if (a == min) {
            continue
        }
        if (i % 2 == 0) {
            list.add(0, a)
            if (minCount != 0) {
                list.add(min)
                minCount--
            }
        } else {
            list.add(a)
            if (minCount != 0) {
                list.add(0, min)
                minCount--
            }
        }
    }

    var ans = 0
    for ((i, a) in list.withIndex()) {
        if (i == list.size-1) {
            break
        }
        ans += Math.abs(list[i] - list[i+1])
    }

    println(ans)
}