Cod sursa(job #254079)

Utilizator Bogdan_tmmTirca Bogdan Bogdan_tmm Data 6 februarie 2009 18:41:21
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<iostream>
#include<stdio.h>
FILE *f=fopen("dezastru.in","r"),*g=fopen("dezastru.out","w");
float a[30];double aux=1,rez,fact=1;
int ut[30],st[30],n,t,nr;
void back(int k)
{
    for(int pval=st[k-1]+1;pval<=n&&nr<fact;pval++)
    {
        st[k]=pval;
        if(!ut[pval]&&k<=n)
        {
            ut[pval]=1;
            if(k==t)
            {
				aux=1;
				for(int i=1;i<=t;i++)
					aux*=a[st[i]];
				nr++;
                rez+=aux;
                ut[pval]=0;
            }
            else
                back(k+1),ut[pval]=0;
        }
    }
}
int main()
{
    fscanf(f,"%d%d",&n,&t);
    for(int i=1;i<=n;i++)
        fscanf(f,"%f",&a[i]);
	for(int j=2;j<=n;j++)
		fact*=j;
	fact/=2;
    back(1);
    fprintf(g,"%6lf",rez/nr);
    return 0;
}