LEM1 - COIN
Tác giả: RR
Ngôn ngữ: Pascal
//Written by Nguyen Thanh Trung
{$R+,Q+,N+}
{$Mode objFPC}
uses math;
const
FINP = '';
FOUT = '';
MAXN = 10111;
eps = 1e-12;
type
real = extended;
var
f1,f2 : text;
n : longint;
r : array[1..MAXN] of real;
procedure openF;
begin
assign(f1,FINP); reset(f1);
assign(f2,FOUT); rewrite(f2);
end;
procedure closeF;
begin
close(f1);
close(f2);
end;
procedure inp;
begin
read(f1,n);
for n:=1 to n do
read(f1,r[n]);
end;
procedure solve;
var
kq,left,right,mid,sum,a,b,c:real;
begin
r[n+1]:=r[1];
left:=0; right:=0;
for n:=1 to n do right+=r[n]*2; right/=pi*2;
while left<right do
begin
mid:=(left+right)/2; sum:=0;
for n:=1 to n do
begin
a:=r[n]+mid;
b:=r[n+1]+mid;
c:=r[n]+r[n+1];
sum+=arccos((a*a+b*b-c*c)/2/a/b);
end;
if abs(sum-2*pi)<eps then begin writeln(f2,mid:0:3); exit; end;
if sum<2*pi then
begin
kq:=mid;
right:=mid-eps;
end
else left:=mid+eps;
end;
writeln(f2,kq:0:3);
end;
begin
openF;
inp;
solve;
closeF;
end.