Cod sursa(job #2727656)

Utilizator PetyAlexandru Peticaru Pety Data 22 martie 2021 11:44:51
Problema Dezastru Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 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, viz[26], 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)
    if (!viz[i]) {
      viz[i] = 1;
      a[p] = i;
      backt(p + 1, prod * prob[i]);
      viz[i] = 0;
    }
}

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;
}