Cod sursa(job #1009043)

Utilizator Dddarius95Darius-Florentin Neatu Dddarius95 Data 12 octombrie 2013 13:21:20
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>
#include <iomanip>
#include <math.h>
#define Nmax 30
using namespace std;
ifstream f("dezastru.in");
ofstream g("dezastru.out");

int N,K,st[Nmax],used[Nmax],NrPerm;
double P[Nmax],S=0.0;

void Back(int k,double produs)
{
    if(k>K) S+=produs;
    else
        for(int i=st[k-1]+1;i<=N;++i)
            if(!used[i])
            {
                st[k]=i; used[i]=1;
                Back(k+1,1.0*produs*P[i]);
                used[i]=0;
            }
}
int main()
{

    f>>N>>K;
    for(int i=1;i<=N;i++)f>>P[i];
    Back(1,1.0);
    for(int i=1;i<=K;i++)S*=i;
    for(int i=N-K+1;i<=N;i++)S/=i;
    g<<fixed<<setprecision(6)<<fabs(S)<<'\n';
    f.close();g.close();
    return 0;
}