Cod sursa(job #3032497)

Utilizator _andrei4567Stan Andrei _andrei4567 Data 22 martie 2023 11:31:38
Problema Dezastru Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
///dp(i)(j) de a lua j termeni in produs cu i ultim
///mai conteaza si pozitia, skill issues

#include <fstream>
#include <iomanip>

using namespace std;

ifstream cin ("dezastru.in");
ofstream cout ("dezastru.out");

const int N = 30;
long double dp[N + 1][N + 1];

long double a[N + 1];

int n, k;

long double ans, p = 1;

int main()
{
    cin >> n >> k;
    for (int i = 1; i <= n; ++i)
        cin >> a[i], dp[i][0] = 1;
    dp[0][0] = 1;
    for (int i = 1; i <= n; ++i)
        for (int j = 1; j <= i; ++j)
            dp[i][j] = dp[i - 1][j - 1] * a[i] + dp[i - 1][j];
    for (int i = k + 1; i <= n; ++i)
        p *= double(i);
    for (int i = 1; i <= n - k; ++i)
        p /= double(i);
    cout << setprecision(6) << fixed << dp[n][k] / p << '\n';
    return 0;
}