Cod sursa(job #2096158)

Utilizator _Victor_Victor Ciobanu _Victor_ Data 28 decembrie 2017 18:13:52
Problema Dezastru Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.96 kb
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.