Cod sursa(job #1742471)

Utilizator flaviu_2001Craciun Ioan-Flaviu flaviu_2001 Data 16 august 2016 15:04:48
Problema Dezastru Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <fstream>
#include <algorithm>
#include <vector>

using namespace std;

int n, k, v[30];
double r[30];
vector<double> a;

void read();
double solve();
bool next_combination();
void write();

int main(){
    read();
    write();
    return 0;
}

void read(){
    ifstream fin ("dezastru.in");
    fin >> n >> k;
    for (int i = 1; i <= n; ++i)
        fin >> r[i],
        v[i] = i;
    fin.close();
}

double solve(){
    double x, s(0);
    int t(0);
    do{
        x = 1;
        for (int i = 1; i <= k; ++i)
            x *= r[v[i]];
        s += x;
        ++t;
    }while(next_combination());
    return s/t;
}

bool next_combination(){
    int r = k;
    int f = n;
    ++v[r];
    if (v[r] == f+1){
        --v[r];
        while (v[r] == f){
            --r;
            --f;
            if (!r)
                return 0;
        }
        ++v[r];
        int e = v[r];
        for (int i = r+1; i <= k; ++i)
            v[i] = ++e;
    }
    return 1;
}

void write(){
    ofstream fout ("dezastru.out");
    fout << solve();
    fout.close();
}