Cod sursa(job #238469)

Utilizator DraStiKDragos Oprica DraStiK Data 2 ianuarie 2009 11:45:40
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <stdio.h>
int n,m,pe;
int sol[30],uz[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]);
}
void back (int k,int val)
{
    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=val; i<=n; ++i)
            if (!uz[i])
            {
                uz[i]=1;
                sol[k]=i;
                back (k+1,i);
                uz[i]=0;
            }
}   
int main ()
{
    freopen ("dezastru.in","r",stdin);
    freopen ("dezastru.out","w",stdout);    
    read ();
    back (1,1);
    printf ("%.6f",sum/pe);
    return 0;
}