Cod sursa(job #1258703)

Utilizator Corina1997Todoran Ana-Corina Corina1997 Data 9 noiembrie 2014 11:58:04
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <iomanip>
using namespace std;

ifstream is("dezastru.in");
ofstream os("dezastru.out");

int n, p, x[27];
long long int cnt;
float a[27];
double sum, rez, aux;

void Sum( int k );
void Back( int k );

int main()
{
    is >> n >> p;
    for ( int i = 1; i <= n; i++ )
        is >> a[i];
    Back(1);
    rez = sum / cnt;
    os << setprecision(6) << rez;

    is.close();
    os.close();
    return 0;
}

void Back( int k )
{
    if ( k > p )
    {
        Sum( k - 1 );
        cnt++;
        return;
    }
    for ( int i = x[k-1] + 1; i <= n; i++ )
    {
        x[k] = i;
        Back(k+1);
    }
}

void Sum( int k )
{
    aux = 1;
    for ( int i = 1; i <= k; i++ )
        aux *= a[x[i]];
    sum += aux;
}