Cod sursa(job #214847)

Utilizator DraStiKDragos Oprica DraStiK Data 16 octombrie 2008 14:52:55
Problema Dezastru Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>
int n,m,pe;
int sol[30];
float a[30];
float sum;
void read ()
{
    int i;
    scanf ("%d%d",&n,&m);
    for (i=1; i<=n; ++i)
        scanf ("%f",&a[i]);
}
int check (int nr,int k)
{
    int i;
    for (i=1; i<k; ++i)
        if (sol[i]==nr)
            return 0;
    return 1;
}
void back (int k)
{
    int i;
    float p=1;
    if (k==m+1)
    {
	for (i=1; i<=m; ++i)
            p*=a[sol[i]];
        sum+=p;
        ++pe;
    }    
    else
        for (i=1; i<=n; ++i)
            if (check (i,k))
            {
                sol[k]=i;
                back (k+1);
            }
}   
int main ()
{
    freopen ("dezastru.in","r",stdin);
    freopen ("dezastru.out","w",stdout);    
    read ();
    back (1);
    printf ("%.6f",sum/pe);
    return 0;
}