Cod sursa(job #256621)

Utilizator f.v.antonFlavius Anton f.v.anton Data 11 februarie 2009 22:32:03
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <fstream.h>
#include <iostream.h>

int x[30],n,p,nr=0;  float y[15000],prob[55]; float c=0;

int valid(int t)
{       int i;
	for(i=1;i<t;i++)
		if(x[t]<=x[i])
			return 0;
	return 1;
}
void rez()
{       double sol=1;  int i;
	for(i=1;i<=p;i++)
		sol*=prob[x[i]];
	c+=sol;
	nr++;
}


void back(int k)
{       int i;
	for(i=1;i<=n;i++)
	{	x[k]=i;

		if(valid(k))
			if(k==p)
			    rez();
			else
			   back(k+1);
	}
}

int main()
{
	fstream f("dezastru.in",ios::in), g("dezastru.out",ios::out);
	f>>n>>p;  int i;
	for(i=1;i<=n;i++)
		f>>prob[i];

	back(1);
	g<<(float)c/nr;
	g.close();
	f.close();
	return 0;


}