Cod sursa(job #2350745)

Utilizator Radu_FilipescuFilipescu Radu Radu_Filipescu Data 21 februarie 2019 17:59:06
Problema Dezastru Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>
#include <iomanip>

using namespace std;

ifstream fin( "dezastru.in" );
ofstream fout( "dezastru.out" );

const int NMAX = 26;

int N, K;
double p[NMAX];
int sol[NMAX];

double prob = 1;
double sum;
int nr;

void Read()
{
  fin >> N >> K;

  for( int i = 1; i <= N; ++i )
    fin >> p[i];

  fin.close();
}

void Backtrack( int k )
{
  for( int i = sol[k - 1] + 1; i <= N; ++i )
  {
    sol[k] = i;

    prob *= p[i];

    if( k == K )
    {
      sum += prob;
      nr++;
    }
    else Backtrack( k + 1 );

    prob /= p[i];
  }
}

int main()
{
    Read();
    Backtrack( 1 );

    fout << fixed << setprecision(6) << ( double ) sum / nr << '\n';

    return 0;
}