Cod sursa(job #45990)

Utilizator MariusGeantaMarius Geanta MariusGeanta Data 2 aprilie 2007 10:49:26
Problema Dezastru Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.11 kb
{ Dezastru/preONI 2007 runda 4 }
program sdf;
    var n,i,q,j:byte;
        m:longint;
        x:array[1..25] of real;
        c,uz:array[1..25]of integer;
        tot:real;
        f:text;
{ procedura pt determinare probabilitati }
procedure probabilitati;
      var i:integer;s:real;
begin
     s:=1;
     for i:=1 to q do s:=s*x[c[i]];
     tot:=tot+s/m;
end;
{ procedura pt generare aranjamente de n luate cate k }
procedure GenAranjamente(k:integer);
      var i:integer;
begin
     if k-1=q then probabilitati
              else
        for i:=1 to n do
            if uz[i]=0 then begin
               c[k]:=i;uz[i]:=1;
               GenAranjamente(k+1);
               uz[i]:=0;
                           end;
end;

begin
     { citire date de intrare }
     assign(f,'dezastru.in');reset(f);
     readln(f,n,q);
     for j:=1 to n do read(f,x[j]);
     close(f);
     { n! }
     m:=1;
     for i:=2 to n do m:=m*i;
     { Determinare nr cerut }
     tot:=0;
     GenAranjamente(1);
     { afisare }
     assign(f,'dezastru.out');rewrite(f);
     write(f,tot:7:6);
     close(f);
end.