Cod sursa(job #183935)

Utilizator mariuscris90giuroiu marius mariuscris90 Data 22 aprilie 2008 19:11:09
Problema Dezastru Scor 60
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.02 kb
{$n+}
program combinari;
type vec=array[0..25] of integer;
     vecc=array[0..25] of extended;
var a:vec;
    b:vecc;
    s:extended;
    z:extended;
    n,p,i:integer;
    f,g:text;
function valid(k:integer):boolean;
var t:boolean;
    i:integer;
begin
t:=true;
{for i:=1 to k-1 do
if a[i]=a[k] then t:=false;
valid:=t;}
end;
function final(k:integer):boolean;
begin
if p=k then final:=true
       else final:=false;
end;
procedure tipar(k:integer);
var i:integer;x:extended;
begin
x:=b[a[1]];
for i:=2 to k do
x:=x*b[a[i]];
x:=x/s;
z:=z+x*2;
end;
procedure back(k:integer);
var i:integer;
begin
for i:=a[k-1]+1 to n do begin
a[k]:=i;
if valid(k) then if final(k) then tipar(k)
                    else back(k+1);
                    end;
end;
begin
assign(f,'dezastru.in');assign(g,'dezastru.out');reset(f);rewrite(g);
readln(f,n,p);a[0]:=0;
for i:=1 to n do
read(f,b[i]);s:=1;
for i:=n-p+1 to n do
s:=s*i;
for i:=1 to p do
s:=s/i;
s:=s*2;
back(1);
write(g,z:0:6);
close(f);close(g);
end.