Cod sursa(job #135431)

Utilizator Mishu91Andrei Misarca Mishu91 Data 13 februarie 2008 19:39:09
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<cstdio>

FILE *fin=freopen("dezastru.in","r",stdin),
     *fout=freopen("dezastru.out","w",stdout);

int N,K,viz[30],nrd;
double a[30],s,p;
double sol[30];
  
void citire()
{
  scanf("%d %d",&N,&K);
  for(int i=0;i<N;i++)
    scanf("%lf",&a[i]);
}

void back(int k)
{
  if(k==K)
  {
    s+=p;
    nrd++;
    return;
  }
  for(int i=0;i<N;i++)
    if(!viz[i])
    if(k==0 || (k>0 && a[i]>sol[k-1]))
    {
      sol[k]=a[i];
      p*=sol[k];
      viz[i]=1;
      back(k+1);
      viz[i]=0;
      p/=sol[k];
   }
}

void solve()
{
  p=1;
  back(0);
  printf("%6lf",s/nrd);
} 
  
int main()
{
  citire();
  solve();
  return 0;
}