Cod sursa(job #947709)

Utilizator ScateWayScateWay ScateWay Data 8 mai 2013 10:19:11
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<stdio.h>
int n,k,v1[30],nfact;
double v[30],suma;
int valid(int x)
{
    for(int i=1;i<x;i++)
        if(v1[i]==v1[x])
            return 0;
    return 1;
}
void bk(int x)
{
    for(int i=1;i<=n;i++)
    {
        v1[x]=i;
        if(valid(x))
            if(x<k)
                bk(x+1);
            else
                if(x==k)
                {
                    double produs=1;
                    for(int j=1;j<=x;j++)
                        produs*=v[v1[j]];
                    for(int j=2;j<=n;j++)
                        produs/=j;
                    suma+=produs;
                }
    }

}
int main()
{
    freopen("dezastru.in","r",stdin);
    freopen("dezastru.out","w",stdout);
    scanf("%d %d",&n,&k);
    for(int i=1;i<=n;i++)
        scanf("%lf",&v[i]);
    bk(1);
    printf("%lf ",suma);
    return 0;
}