Cod sursa(job #2113606)

Utilizator liviu2000Dragomirescu Liviu liviu2000 Data 24 ianuarie 2018 20:19:06
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <bits/stdc++.h>

using namespace std;

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

int main()
{
    int n , k , i , j , prm ;
    double p[26] , mat[26][26] ;
    long long nfact = 1, kfact = 1, nkfact = 1;
    fin >> n >> k ;
    for ( i = 1 ; i <= n ; i++ )
    {
        fin >> p[i] ;
        nfact = nfact*i ;
    }
    for ( i = 0 ; i <= n ; i++)
        for ( j = 0 ; j <= k ; j++ )
            mat[i][j] = 0 ;
    for ( i = 1 ; i <= n ; i++ )
        mat[i][1] = p[i] + mat[i-1][1] ;
    for ( i = 1 ; i <= n ; i++ )
    {
        for ( j = 2 ; j <= k ; j++ )
        {
            mat[i][j] = mat[i-1][j] + mat[i-1][j-1]*p[i] ;
            //cout << mat[i][j] << " " ;
        }
        //cout << endl ;
    }
    for ( i = 2 ; i <= k ; i++ )
        kfact = kfact*i ;
    for ( i = 2 ; i <= n-kfact ; i++ )
        nkfact = nkfact*i ;
    prm = nfact/kfact/nkfact ;
    fout << mat[n][k]/prm ;
}