Cod sursa(job #2165027)

Utilizator mihailescu_eduardMihailescu Eduard-Florin mihailescu_eduard Data 13 martie 2018 10:52:02
Problema Dezastru Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
#include <iostream>
#include <bitset>
#include <vector>
using namespace std;
int N, p, v[26],ct=0;
double a[26];
vector<double> aa;
double probabilitate;

void permutari(int k)
{
    if(k == p + 1)
    {
        double produs=1;
        for(int i = 1; i<= p; ++i)
            produs*=a[v[i]];
        aa.push_back(produs);
    }
    else
    {
        for(int x = 1; x<= N; ++x)
        {
            bitset<1> gasit;
            gasit[0]=0;
            for(int i = 1; i<= k - 1; ++i)
            {
                if(v[i]==x)
                    gasit[0]=1;
            }
            if(gasit[0]==0)
            {
                v[k]=x;
                permutari(k+1);
            }
        }
    }
}
int main()
{
    freopen("dezastru.in","r",stdin);
    freopen("dezastru.out","w",stdout);
    cin >> N >> p;
    for(int i = 1; i<= N;++i)
        cin >> a[i];
    permutari(1);
    for(int i = 0; i< aa.size();++i)
        probabilitate+= aa[i]/ aa.size();
    cout<<probabilitate;
    return 0;
}