Cod sursa(job #2452571)

Utilizator verde.cristian2005Verde Flaviu-Cristian verde.cristian2005 Data 31 august 2019 12:19:26
Problema Dezastru Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
using namespace std;
ifstream in("dezastru.in");
ofstream out("dezastru.out");
int n,k;
double v[26],sum;
void bkt(int poz,double prod,int last)
{
    if(poz==k)
    {
        sum+=prod;
        return;
    }
    for(int i=last+1; i<=n; i++)
        bkt(poz+1,prod*v[i],i);
}
int main()
{
    int cn,i;
    in>>n>>k;
    cn=n;
    for(i=1; i<=n; i++)
        in>>v[i];
    bkt(0,1,0);
    if(k>n-k)
        k=n-k;
    for(i=2; i<=k; i++)
    {
        if(sum*i<=8*(1e7))
            sum*=i;
        else
        {
            sum/=n;
            --n;
        }
    }
    for(i=2; i<=cn-k; i++)
    {
        if(sum*i<=8*(1e7))
            sum*=i;
        else
        {
            sum/=n;
            --n;
        }
    }
    while(n)
    {
     sum/=n;
     --n;
    }
    out<<sum;
    return 0;
}