Cod sursa(job #167423)

Utilizator philip_dugalleHadczy-Pop Filip philip_dugalle Data 29 martie 2008 16:27:37
Problema Dezastru Scor 70
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.06 kb
var f,g:text;
    i,n,k,p:byte;
    x:array[1..25] of byte;
    a:array[1..25] of real;
    ok:boolean;
    s,ss,nr:real;

procedure citire;
  begin
    assign(f,'dezastru.in');
    reset(f);
    readln(f,n,p);
    for i:=1 to n do read(f,a[i]);
  end;

function posibil(k:byte):boolean;
  begin
    posibil:=true;
    if x[k]>n-p+k then begin posibil:=false; exit; end;
    for i:=1 to k-1 do if x[i]>=x[k] then begin
      posibil:=false;
      exit;
    end;
  end;

procedure sol;
  begin
    s:=1;
    for i:=1 to p do s:=s*a[x[i]];
    nr:=nr+1;
    ss:=ss+s;
  end;

procedure back;
  begin
    k:=1;
    while k>0 do begin
      ok:=false;
      while not ok and (x[k]<n) do begin
        x[k]:=x[k]+1;
        ok:=posibil(k);
      end;
      if ok then if k=p then sol
                 else begin k:=k+1; x[k]:=k-1; end
      else k:=k-1;
    end;
  end;

procedure afisare;
  begin
    assign(g,'dezastru.out');
    rewrite(g);
    writeln(g,ss/nr:10:6);
    close(g);
  end;

begin
  citire;
  back;
  afisare;
end.