Cod sursa(job #1632176)

Utilizator DoubleNyNinicu Cristian DoubleNy Data 5 martie 2016 22:19:11
Problema Dezastru Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.17 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;
    inc(atacuri);
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;


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:=0;
             back(1);
             writeln(atacuri);
             write(output,(o/atacuri):7:6);
    close(input);
    close(output);
End.