Cod sursa(job #1817850)

Utilizator vlasiuflaviusVlasiu Flavius vlasiuflavius Data 28 noiembrie 2016 15:46:39
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#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();
}