Cod sursa(job #1632144)

Utilizator DoubleNyNinicu Cristian DoubleNy Data 5 martie 2016 21:58:45
Problema Dezastru Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.24 kb
var q:array[1..30] of integer;
    i,n,k,atacuri:integer;
    v:array[1..30] of real;
    o:real;


function valid(m:integer):boolean;
var i:integer;
begin
    valid:=true;
    for i:=1 to m-1
    do if q[i]=q[m] then valid:=not(valid);
end;

function solutie(m:integer):boolean;
begin
    solutie:=true;
    if m<>k then solutie:=not(solutie);
end;

procedure raspuns(m:integer);
var i,j:integer;
    loc:real;
begin
    loc:=1;
    for i:=1 to k do
    begin
        loc:=loc*v[q[i]];
    end;
    o:=o+loc;
end;

procedure back(m:integer);
var i,j:integer;
begin
     for i:=1 to n do
     begin
         q[m]:=i;
         if valid(m) then
         begin
             if solutie(m) then raspuns(m);
             back(m+1);
         end;

     end;

end;

function fact(n:integer):integer;
begin
     if n=1 then fact:=1
     else fact:=n*fact(n-1);
end;


Begin
    assign(input,'dezastru.in'); reset(input);
    assign(output,'dezastru.out'); rewrite(output);
             readln(input,n,k);
             for i:=1 to n do
             read(v[i]);
             o:=0;
             Atacuri:=fact(n);
             back(1);
             write(output,o/atacuri:7:6);
    close(input);
    close(output);
End.