Cod sursa(job #190542)

Utilizator andrutzaDincu Andra andrutza Data 22 mai 2008 23:27:41
Problema Dezastru Scor 50
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.05 kb
var n,p,i,nr,m:integer;
    s,rez:real;
    sol:array[1..30]of integer;
    v:array[1..30]of real;

procedure init(k:integer);
begin
  sol[k]:=0;
end;

function succesor(k:integer):boolean;
begin
  if (sol[k]<n) then begin
     sol[k]:=sol[k]+1;
     succesor:=true;
  end
  else succesor:=false;
end;

function valid(k:integer):boolean;
var i:integer;
begin
  valid:=true;
  for i:=1 to k-1 do
    if (sol[i]=sol[k]) then valid:=false;
end;

function solutie(k:integer):boolean;
begin
  solutie:=(k=m+1);
end;

procedure tipar;
var i:integer;
   begin
   s:=1;
   for i:=1 to m do s:=s*v[sol[i]];
   rez:=rez+s;
   inc(nr);
end;

procedure back(k:integer);
begin
  if solutie(k) then tipar
   else begin
      init(k);
      while succesor(k) do
        if valid(k) then back(k+1);
    end;
end;

begin
  assign(input,'dezastru.in'); reset(input);
  assign(output,'dezastru.out'); rewrite(output);
  readln(n,m);
  for i:=1 to n do read(v[i]);
  back(1);
  writeln(rez/nr:0:6);
  close(input); close(output);
end.