LEM1 - COIN

Tác giả: skyvn97

Ngôn ngữ: C++

#include<stdio.h>
#include<math.h>
#define MAX   10101
#define INF   1e8
#define EPS   1e-5
#define PI   acos(-1.0)
double r[MAX];
int n,i;
double sa;
double t,b,m;
double angleA(double a,double b,double c) {
	return (acos((b*b+c*c-a*a)/(2*b*c)));
}
int main(void) {
	scanf("%d",&n);
	for (i=1;i<=n;i=i+1)
		scanf("%lf",&r[i-1]);
	b=0;t=INF;
	while (t-b>EPS) {
		m=(t+b)/2;
		sa=0;
		for (i=0;i<n;i=i+1)
			sa=sa+angleA(r[i%n]+r[(i+1)%n],m+r[i%n],m+r[(i+1)%n]);
		if (sa<2*PI) t=m; else b=m;		
	}		
	printf("%.3lf",b);
}

Download