Cod sursa(job #2168089)

Utilizator fciocanCiocan Florin fciocan Data 14 martie 2018 09:31:35
Problema Dezastru Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <iostream>
#include <iomanip>
#include <fstream>

using namespace std;

ifstream f("dezastru.in");
ofstream g("dezastru.out");

int v[30], n, m, K;
double a[30], S;
void afis(int k)
{
    double p = 1;

    for(int i = 1; i <= m; ++i)
    {
        p *= a[v[i]];
    }
    S += p;
    K++;
}

int verif(int k)
{
    for(int i = 1; i < k; ++i)
        if(v[i] == v[k])
            return 0;
    return 1;
}

void bck(int k)
{
    for(int i = 1; i <= n; ++i)
    {
        v[k] = i;
       if(verif(k))
       {
            if(k == m)
            {
                afis(k);
            }
            else bck(k+1);
       }
    }
}

int main()
{
    f>>n>>m;
    for(int i = 1; i <= n; ++i)
        f>>a[i];
    bck(1);
    g<<fixed<<setprecision(6)<<(double)S/K;
    return 0;
}