Pagini recente » Cod sursa (job #1474202) | Cod sursa (job #600141) | Cod sursa (job #30219) | Cod sursa (job #923803) | Cod sursa (job #167406)
Cod sursa(job #167406)
var f,g:text;
i,n,k,p:byte;
x:array[1..25] of byte;
a:array[1..25] of real;
ok:boolean;
s,ss:real;
procedure citire;
begin
assign(f,'dezastru.in');
reset(f);
readln(f,n,p);
for i:=1 to n do read(f,a[i]);
end;
function posibil(k:byte):boolean;
begin
posibil:=true;
if x[k]>n-p+k then begin posibil:=false; exit; end;
for i:=1 to k-1 do if x[i]>=x[k] then begin
posibil:=false;
exit;
end;
end;
procedure sol;
begin
s:=1;
for i:=1 to p do s:=s*a[x[i]];
for i:=1 to n do s:=s/i;
for i:=1 to p do s:=s*i;
for i:=1 to n-p do s:=s*i;
ss:=ss+s;
end;
procedure back;
begin
k:=1;
while k>0 do begin
ok:=false;
while not ok and (x[k]<n) do begin
x[k]:=x[k]+1;
ok:=posibil(k);
end;
if ok then if k=p then sol
else begin k:=k+1; x[k]:=0; end
else k:=k-1;
end;
end;
procedure afisare;
begin
assign(g,'dezastru.out');
rewrite(g);
writeln(g,ss:10:6);
close(g);
end;
begin
citire;
back;
afisare;
end.