Description:
Accept:
#include<bits/stdc++.h>
using namespace std;
double r[15], x[15], n, Min=0x3f3f3f3f;
double dis(int i, int j){
return sqrt((r[j]+r[i])*(r[j]+r[i])-(r[j]-r[i])*(r[j]-r[i]));
}
void compute(){
double low=0, high=0;
for(int i=1;i<=n;i++){
if(x[i]-r[i]<low)low=x[i]-r[i];
if(x[i]+r[i]>high)high=x[i]+r[i];
}
if(high-low<Min)Min=high-low;
}
double center(int i){
double xi=0;
for(int j=1;j<i;j++){
double xii=x[j]+dis(j, i);
if(xii>xi){
xi=xii;
}
}
return xi;
}
void dfs(int t){
if(t>n){
compute();
}
for(int i=t;i<=n;i++){
swap(r[i], r[t]);
x[t]=center(t);
// x[t]=xt;
dfs(t+1);
swap(r[i], r[t]);
}
}
int main()
{
while(cin>>n){
memset(r, 0, sizeof(r));
memset(x, 0, sizeof(x));
for(int i=1;i<=n;i++){
cin>>r[i];
}
dfs(1);
printf("%.3lf\n", Min);
}
return 0;
}