Cod sursa(job #1908772)

Utilizator andreizZenoveiov Andrei andreiz Data 7 martie 2017 10:21:06
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <iomanip>
using namespace std;

ifstream f("dezastru.in");
ofstream g("dezastru.out");
int n,k,i,x[26];
float a[26];
double s;
unsigned long long fact(int n)
{
if(n==0)
    return 1;
if(n==k)
    return n;
else
    return n*fact(n-1);
}

void calcul()
{
int j;
float p=1;
for(j=1;j<=k;j++)
    p*=a[x[j]];
s+=p;
}
void A(int i)
{
int maxx=*max_element(x,x+i);
for(int valk=1+maxx;valk<=n;valk++)
    {
    x[i]=valk;
    for(int v=1;v<=i;v++)
        {
        swap(x[v],x[i]);
        if(i<k)
            A(i+1);
        else
            calcul();
        swap(x[v],x[i]);
        }
    }
}

int main()
{
f>>n>>k;
for(i=1;i<=n;i++)
    f>>a[i];
A(1);
g<<fixed<<setprecision(6)<<(s/fact(n));
return 0;
}