Cod sursa(job #39080)

Utilizator andrewgPestele cel Mare andrewg Data 26 martie 2007 13:30:39
Problema Dezastru Scor 60
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.06 kb
const maxn = 25;

var f:text;
    n,k,i,j:longint;
    sol,r:real;
    a:array[1..maxn]of real;
    st:array[0..maxn]of longint;
    fol:array[1..maxn]of boolean;

procedure readdata;
begin
   assign(f,'dezastru.in');
   reset(f);
   readln(f,n,k);
   for i:=1 to n do
   begin
      read(f,a[i]);
   end;
   close(f);
end;

procedure back(m:integer);
var i:integer;
begin
   if m>k then
   begin
      sol:=sol+r;
   end
      else
   begin
      for i:=st[m-1]+1 to n do
      begin
         if fol[i]=false then
         begin
            st[m]:=i;
            r:=r*a[i];
            fol[i]:=true;
            back(m+1);
            fol[i]:=false;
            r:=r/a[i];
         end;
      end;
   end;
end;

procedure solve;
begin
   st[0]:=0;
   r:=1;
   sol:=0;
   back(1);
end;

procedure writedata;
begin
   assign(f,'dezastru.out');
   rewrite(f);
   r:=1;
   for i:=k+1 to n do
   begin
      r:=r*i/(i-k);
   end;
   writeln(f,sol/r:0:6);
   close(f);
end;

begin
   readdata;
   solve;
   writedata;
end.