Pagini recente » Cod sursa (job #2035217) | Cod sursa (job #1247111) | Cod sursa (job #1674347) | Cod sursa (job #1636271) | Cod sursa (job #168252)
Cod sursa(job #168252)
type stiva=array[1..25] of integer;
var as,ev:boolean;
st:stiva;
k,n,m,i,nr:integer;
f,g:text;
suma:real;
a:array[1..25] of real;
procedure init(k:integer; var st:stiva);
begin
st[k]:=0;
end;
procedure succesor(k:integer; var st:stiva; var as:boolean);
begin
if st[k]<n then begin
as:=true;
st[k]:=st[k]+1;
end
else as:=false;
end;
procedure valid(k:integer; st:stiva; var ev:boolean);
var i:integer;
begin
ev:=true;
for i:=1 to k-1 do
if st[i]=st[k] then ev:=false;
if k>1 then if st[k-1]>st[k] then ev:=false;
end;
function sol(k:integer):boolean;
begin
sol:=(k=m);
end;
procedure prod;
var i:integer;
p:real;
begin
p:=1;
for i:=1 to k do
p:=p*a[st[i]];
suma:=suma+p;
nr:=nr+1;
end;
BEGIN
assign(f,'dezastru.in'); reset(f);
assign(g,'dezastru.out'); rewrite(g);
readln(f,n,m);
for i:=1 to n do
read(f,a[i]);
suma:=0; nr:=0;
k:=1;
init(k,st);
while k>0 do
begin
repeat
succesor(k,st,as);
if as then valid(k,st,ev);
until not(as) or (as and ev);
if as then if sol(k) then prod
else begin
k:=k+1;
init(k,st);
end
else k:=k-1;
end;
writeln(g,suma/nr:0:6);
close(f); close(g);
END.