Cod sursa(job #2828813)

Utilizator KarinaDKarina Dumitrescu KarinaD Data 8 ianuarie 2022 00:06:08
Problema Dezastru Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
#include <iostream>
#include <iomanip>
 
using namespace std;
 
int v [ 30 ], f [ 30 ];
float a [ 30 ];
 
int n, k, c;
float s;
 
void dezastru ( int i ){
    
    if ( i == k ){
        
        float p = 1;
        
        for ( i = 1; i <= k; i++ )
            p = p * a [ v [ i ] ];
        
        s = s + p;
        c++;
    }
    
    else {
        
        for ( int j = v[ i ] + 1; j <= n; j++ ){
            
            if ( f [ j ] == 0 ){
                
                v[ i + 1 ] = j;
                f [ j ] = 1;
                
                dezastru ( i + 1 );
                
                f [ j ] = 0;
                v[ i + 1 ] = 0;
            }
        }
    }
}
 
int main( ) {
    
    ifstream fin ( "dezastru.in" );
    ofstream fout ( "dezastru.out" );
    
    int i;
    
    fin >> n >> k;
    
    for ( i = 1; i <= n; i++ )
        fin >> a [ i ];
    
    for ( i = 1; i <= n; i++ )
        v[ i ] = i;
    
    dezastru ( 0 );
    
    fout << fixed << setprecision ( 6 ) << s / c;
    
    return 0;
}