Cod sursa(job #574434)
var a:array[1..25] of real;
x:array[0..25] of byte;
i,n,k,p,y,z,q:longint;
s:real;
procedure sol;
var i:integer;
pr:real;
begin
pr:=1;
for i:=1 to k do
pr:=pr*a[x[i]];
s:=s+pr;
end;
procedure back(t:integer);
var i:integer;
begin
for i:=x[t-1]+1 to n do
begin
x[t]:=i;
if t=k then sol
else back(t+1);
end;
end;
begin
assign(input,'dezastru.in');reset(input);
assign(output,'dezastru.out');rewrite(output);
readln(n,k);
for i:=1 to n do read(a[i]);
s:=0;
back(1);
for i:=n downto 1 do
begin
s:=s/i;
if i<=k then s:=s*i;
if i<=n-k then s:=s*i;
end;
write(s:0:6);
end.