Pagini recente » Cod sursa (job #3030658) | Cod sursa (job #1885282) | Cod sursa (job #2030486) | Cod sursa (job #353173) | Cod sursa (job #1817850)
#include <fstream>
#include <iostream>
#include <iomanip>
using namespace std;
ofstream fout ("dezastru.out");
ifstream fin ("dezastru.in");
int i,n,k,v[30],crt;
double suma,cost[30];
int ok( int niv )
{
for( int i = 1 ; i < niv ; i++ )
if( v[ i ] >= v[ niv ] )
return 0;
return 1;
}
void adaugare()
{
double rsp = 1;
for( i = 1 ; i <= k ; i++ )
rsp *= cost[ v[ i ] ];
suma += rsp;
crt++;
}
void backtr( int niv )
{
for( int i = 1 ; i <= n ; i++ )
{
v[ niv ] = i;
if( ok( niv ) )
{
if( niv == k )
adaugare();
else
backtr( niv + 1 );
}
}
}
void afisare()
{
setprecision( 8 );
fout<<fixed<<suma / crt;
}
int main()
{
fin>>n>>k;
for( i = 1 ; i <= n ; i++ )
fin>>cost[ i ];
backtr( 1 );
afisare();
}