Cod sursa(job #2096187)

Utilizator _Victor_Victor Ciobanu _Victor_ Data 28 decembrie 2017 19:07:58
Problema Dezastru Scor 60
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.86 kb
Program Dezastru;
type nlim = integer;
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 sol(k:nlim):boolean;
begin
 if k = p 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 k do
  //write(v[i],' ');
  prc[l]:=prc[l]*pri[v[i]];
//writeln;
end;
procedure backtrack(k:nlim);
var i:nlim;
begin
for i:=v[k-1]+1 to n do begin
 v[k]:=i;
  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];
rez:=s/l;
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):0:6);
close(f);
close(g);
end.