- 一本通链接
- 依旧是一本通的题,用两个堆就能解决
- 没什么好说的
- 上代码!
#include<bits/stdc++.h>
using namespace std;
priority_queue<int, vector<int>, greater<int> > a; //小顶堆
priority_queue<int> b;//大顶堆
int main()
{
int n,x,y,f;
scanf("%d",&n);
for(int i=1;i<=n;i++){//输入和入堆
scanf("%d",&f);
a.push(f);b.push(f);
}
for(int i=1;i<n;i++){
x=a.top();a.pop();y=a.top();a.pop();
a.push(x*y+1);
x=b.top();b.pop();y=b.top();b.pop();
b.push(x*y+1);
}
printf("%d\n",a.top()-b.top());
return 0;
}