Cod sursa(job #273195)

Utilizator catalin93Catalin Ionescu catalin93 Data 8 martie 2009 12:17:25
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <stdio.h>

int v[30];
double suma, prob[30];
double p;
long long n;
long long k,kfact2,nfact,kfact,n2;

int exista( int t)
{
	if  (v[t]<n) 
		return 1;
	return 0;
}

int cond( int t)
{
	int i;	
	for(i=0;i<t;i++)
		if(v[i]>=v[t])		//verificam sa fie diferit si sa fie mai mare ca sa fie unica solutia
			return 0;
	return 1;
}

int solutie( int t)
{
	if(t==k)
		return 1;
	return 0;
}

void afisare(int t)
{
	int i;
	double temp;
	temp =1;
	for(i=0;i<t;++i)
				temp*=prob[v[i]];
	suma+=temp;
		++p;
}

void bkt(int t)
{
int i;
      if(solutie(t))
	  afisare(t);
      else
  
      for(i=0;i<n;i++)	//for de la prima valoare valida la ultima valoare valida
  {
      v[t] = i;		//aici dami valorile posibile
      if(cond(t))	//verificare conditii pentru valoarea curenta
	  bkt(t+1);
    }

}



int main()
{
	int i;
	freopen("dezastru.in","r",stdin);
	freopen("dezastru.out","w",stdout);
	scanf("%lld %lld\n",&n,&k);
	
	for(i=0;i<n;i++)
		scanf("%lf",&prob[i]);
		
	suma=0;
	bkt(0);
	printf("%lf\n",p);
	printf("%lf\n",suma);
	suma=suma/p;
	printf("%lf",suma);

return 0;
}