Cod sursa(job #73238)

Utilizator taloibogdanTaloi Bogdan Cristian taloibogdan Data 17 iulie 2007 16:14:06
Problema Dezastru Scor 20
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.74 kb
Program dezastru;
Var f:text;
    i,k,n,p,kk:longint;
    s,pp:real;
    c:array[1..8000] of byte;
    a:array[1..8000] of real;
Begin
  assign(f,'dezastru.in');
  reset(f);
  readln(f,n,k);
  for i:=1 to n do read(f,a[i]);
  s:=0.0;
  pp:=1.0;
  kk:=1;
  for i:=1 to k do begin kk:=kk*i; c[i]:=i; pp:=pp*a[c[i]]; end;
  s:=s+(pp/(n*(n-1)))*kk;
  repeat
   c[k]:=c[k]+1;
   if c[k]=n+1 then
     begin
      p:=k-1;
      while (p>0) and (c[p]=n-k+p) do p:=p-1;
      c[p]:=c[p]+1;
      for i:=p+1 to k do c[i]:=c[i-1]+1;
     end;
    pp:=1.0;
    for i:=1 to k do pp:=pp*a[c[i]];
    s:=s+(pp/(n*(n-1)))*kk;
  until(c[1]=n-k+1);
  close(f);
  assign(f,'dezastru.out');
  rewrite(f);
  Writeln(f,s:0:6);
  close(f);
End.