#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。