Cod sursa(job #1300516)

Utilizator delia_99Delia Draghici delia_99 Data 24 decembrie 2014 15:35:41
Problema Dezastru Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstdio>

using namespace std;
int n,k,sol[30],i,l,p;
float a[30],nr;

void calc(float &nr)
{
    int j;
    float x=1;
    for(j=1; j<=k; ++j)
        x*=a[sol[j]];
    nr+=x;
    return;
}
bool ok(int l)
{
    int j;
    bool ok2=true;
    for(j=1; j<l; ++j)
        if(sol[j]==sol[l])
        {
            ok2=false;
            break;
        }
    return ok2;

}

void back(int l)
{
    int i;
    if(l>n)
        {calc(nr);++p;}
    else
    {
        for(i=1; i<=n; ++i)
        {
            sol[l]=i;
            if(ok(l))
             back(l+1);
        }
    }
    return;

}
int main()
{
    freopen("dezastru.in","r",stdin);
    freopen("dezastru.out","w",stdout);
    scanf("%d %d\n",&n,&k);
    for(i=1; i<=n; ++i)
        scanf("%f",&a[i]);
    nr=0;p=0;
    back(1);
    printf("%.6f",nr/p);

    return 0;
}