比较简单的贪心题,和霍夫曼编码类似,
#include <cstdio>
#include <iostream>
#include <cstring>
#include <cmath>
#include <vector>
#include <set>
#include <string>
#include <map>
#include <stack>
#include <queue>
#include <algorithm>
#define fi first
#define se second
#define pb push_back
#define all(x) (x).begin(), (x).end()
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> pa;
int main() {
int n;
cin >> n;
priority_queue<double> q;
for (int i = 0; i < n; i++) {
double x;
cin >> x;
q.push(x);
}
while (q.size() > 1) {
double a = q.top(); q.pop();
double b = q.top(); q.pop();
q.push(2 * sqrt(a * b));
}
printf("%.3f", q.top());
return 0;
}