Pagini recente » Cod sursa (job #2167795) | Cod sursa (job #901714) | Cod sursa (job #873484) | Cod sursa (job #530827) | Cod sursa (job #2096158)
Program Dezastru;
type nlim = 0..25;
vect = array[nlim] of nlim;
tab = array[nlim] of real;
var n,i,p:nlim;
l:integer;
v:vect;
f,g:text;
pri,prc:tab;
function valid(k:nlim):boolean;
var i:nlim;
begin
valid:=true;
for i:=1 to k-1 do
if v[k]=v[i] then
valid:=false;
end;
function sol(k:nlim):boolean;
begin
if k = n then sol:=true
else sol:=false;
end;
procedure Calc(k:nlim);
var i:nlim;
begin
l:=l+1;
prc[l]:=1;
for i:=1 to p do
prc[l]:=prc[l]*pri[v[i]];
end;
procedure backtrack(k:nlim);
var i:nlim;
begin
for i:=1 to n do begin
v[k]:=i;
if valid(k) then
if sol(k) then
calc(k)
else backtrack(k+1);
end;
end;
function rez(l:integer):real;
var s:real;
begin
s:=0;
for i:=1 to l do
s:=s + prc[i]/l;
rez:=s;
end;
begin
l:=0;
assign(f,'dezastru.in');
assign(g,'dezastru.out');
reset(f);
rewrite(g);
readln(f,n,p);
for i:=1 to n do
read(f,pri[i]);
backtrack(1);
writeln(g,rez(l));
close(f);
close(g);
end.