思路
两个优先队列。
代码
#include <bits/stdc++.h>
using namespace std;
int n, mod, a[50010], maxn, minn;
priority_queue<int, vector<int>, greater<int> > p;
priority_queue<int, vector<int>, less<int> > q;
int main() {
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
p.push(a[i]);
q.push(a[i]);
}
int tttttt;
cin >> tttttt;
int x, y;
for (int i = 1; i < n; i++)
{
x = p.top();
p.pop();
y = p.top();
p.pop();
p.push(x * y + 1);
x = q.top();
q.pop();
y = q.top();
q.pop();
q.push(x * y + 1);
}
maxn = p.top(), minn = q.top();
cout << maxn - minn << endl;
return 0;
}