Cod sursa(job #3032490)

Utilizator _andrei4567Stan Andrei _andrei4567 Data 22 martie 2023 11:17:41
Problema Dezastru Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
///dp(i)(j) de a lua j termeni in produs cu i ultim

#include <fstream>
#include <iomanip>

using namespace std;

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

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

double a[N + 1];

int n, k;

double ans, p = 1;

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