#1050. Mila 的精炼数 (magic.cpp)

Mila 的精炼数 (magic.cpp)

【题目描述】

由于被某人使唤,Mila 被迫去收集了 n 件素材,每件素材都有一个魔力值,现在 Mila 要将他们进行精炼。

对于一个素材集合 A,将其精炼后能得到的魔力值为: A 中魔力值次大的素材与魔力值次小的素材的魔力值之差的绝对值。这里的次大与次小不是严格的,比如当 A ={1,1,2,3}时,次大为 2,次小为 1,那么差值的绝对值就是 1。

现在 Mila 要将这n件素材分成若干个集合,一件素材只能在一个集合内,因为素材在精炼后就被消耗掉了。Mila 想要知道将所有素材集合精炼后能得到的最大总魔力值。

【输入格式】

第一行一个整数n,表示素材个数;

第二行n个整数,表示每件素材的魔力值。

【输出格式】

一行一个整数,表示将素材划分成若干个集合,并将这些集合进行精炼后能得到的最大总魔力值。

【样例输入】

4
1 1 2 1

【样例输出】

1

【样例解释】

将所有素材划分为 2个集合: {1, 1}, {1, 2},第一个集合精炼后产生的魔力值为 0,第二个产生的魔力值为 1。

【数据范围】

对于前 20% 的数据,满足n< 10。

对于前 40% 的数据,满足 n < 10^3。

对于另外 20% 的数据,满足 ai<2。

对于 100% 的数据,满足1≤n<10^6,1≤ai<10^9。