Cod sursa(job #2727659)

Utilizator PetyAlexandru Peticaru Pety Data 22 martie 2021 11:46:16
Problema Dezastru Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <bits/stdc++.h>
//#pragma GCC target ("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#define ll long long
#define ld long double

using namespace std;

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

int n, k, a[26];
double prob[26], ans, aux;

void backt (int p, double prod) {
  if (p ==k + 1) {
    ans += prod * aux;
    return;
  }
  for (int i  = a[p - 1] + 1; i <= n; ++i) {
    a[p] = i;
    backt(p + 1, prod * prob[i]);
  }
}

int main()
{
  fin >> n >> k;
  aux = 1;
  for (int i = 1; i <= k; i++)
    aux *= i;
  for (int i = n - k + 1; i <= n;i++)
    aux = 1.0 * aux / i;
  for (int i = 1; i <= n; i++)
    fin >> prob[i];
  backt(1, 1);
  fout<< fixed << setprecision(9) << ans << "\n";
  return 0;
}