LEM1 - COIN
Tác giả: happyboy99x
Ngôn ngữ: C++
#include<cstdio>
#include<cmath>
const int N = 10000+5;
const double EPS = 1e-9;
double r[N];
int n;
inline double alpha(const double &a, const double &b, const double &c) {
return acos((b*b+c*c-a*a)/(2*b*c));
}
int main() {
scanf("%d",&n);for(int i=0;i<n;++i) scanf("%lf",r+i);
double l = 0, h = 1e9;
while(fabs(h-l) > EPS) {
double r0 = (l+h)/2, angle = alpha(r[0]+r[n-1],r0+r[0],r0+r[n-1]);
for(int i=1;i<n;++i) angle += alpha(r[i]+r[i-1],r0+r[i],r0+r[i-1]);
if(angle < 2*M_PI) h = r0; else l = r0;
}
printf("%.3lf\n", (l+h)/2);
return 0;
}