题目信息
在黑板上写了N个正整数做成的一个数列,进行如下操作:
每一次擦去其中的两个数a和b,然后在数列中加入一个数a×b+1,如此下去直至黑板上剩下一个数。
在所有按这种操作方式最后得到的数中,最大的max,最小的为min,则该数列的极差定义为M=max-min。
输入
多组数据输入
每组数据第一行为N 2<=N<=20
接下来一行,为N个int范围内的正整数。(保证运算过程中数据范围在2^63以内)
输出
对于每组数据,输出一行,为极差M的值
输入样例
4
2 1 4 3
输出样例
13
解题思路
这题的名字叫在北航OJ上的名字是简单·简单的贪心,因此想到应该是用贪心算法来解决,可以写一个只有三个元素的数组做验算,得到最大值和最小值的获得方法,最大值应该是始终选小数来乘,最小值是始终选大数来乘,可以使用优先队列解决。
AC代码
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#define MAXN 25
using namespace std;
int n;
int main