Cod sursa(job #2335396)

Utilizator Andrei-27Arhire Andrei Andrei-27 Data 3 februarie 2019 23:52:40
Problema Dezastru Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <bits/stdc++.h>
#define ll long long
using namespace std ;
const int N  = 25 ;
ifstream in ("dezastru.in") ;
ofstream out ("dezastru.out") ;

double rez , p = 1 , sum , cnt , d [ N ] ;
ll st [ N ] ;
/*
int comb ( int n , int k )
{
    cmb = n - k + 1 ;
    for ( int i = 2 ; i <= k ; ++ i)
        cmb *= n - k + i , cmb /= i ;
    return cmb ;
}
*/
void ans ( float k )
{
    rez = 1 ;
    for ( ll i = 1 ; i <= k ; i ++ )    rez *= d [ st [ i ] ] ;
    sum += rez ;
    cnt ++ ;
}

void gen_comb ( ll n , ll k , ll level  , ll r )
{
    if ( level == k + 1 )   { ans ( k ) ; return ; }

    for ( ll i = r ; i <= n - k + level ; ++ i )
    {
        st [ level ] = i ;
        gen_comb( n , k , level + 1 , i + 1 ) ;
    }
}

int main ()
{
    ll n , k ;
    in >> n >> k ;
    for ( ll i = 1 ; i <= n ; ++ i )   in >> d [ i ] ;
    gen_comb( n , k , 1 , 1 ) ;
    out << setprecision( 6 ) << fixed << sum / cnt << "\n" ;
    return 0 ;
}