Cod sursa(job #133699)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 9 februarie 2008 15:27:49
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <fstream.h>
#include <stdio.h>

ifstream fin ("dezastru.in");

double a[100],v[100];
long  n,K;
long long  nr=0;
double P=0,S=0,R;

void citire()
{
  fin>>n>>K;
    for (int i=0;i<n;i++)
      fin>>a[i];
  fin.close();
}

void back (int k)
{
  if (k==K)
  {
     P+=S*(R);
     nr++;
     return ;
  }
  for (int i=0;i<n;i++)
      if (v[i]!=1)
      {
	 S*=a[i];
	 v[i]=1;
	 back(k+1);
	 S/=a[i];
	 v[i]=0;
      }
}

int main ()
{
  citire();
  S=1;
  R=(n-K)*(n-K+1)/2;
  if (R==0)
      R=1;
  P=0;
  back(0);
  P/=nr;
  freopen ("dezastru.out","w",stdout);
  printf("%.6lf",P);
  fclose (stdout);
  return 0;
}