Cod sursa(job #954292)

Utilizator sorin2kSorin Nutu sorin2k Data 28 mai 2013 21:06:46
Problema Dezastru Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<fstream>
#include<iostream>
using namespace std;

ifstream fin("dezastru.in");
ofstream fout("dezastru.out");

int n, k, a[26], i, nr;
double p[26], prob;

int valid()
{
	int i, j;
	for(i = 1; i <= k; i++)
		for(j = 1; j <= k; j++)
			if(a[i] == a[j] && i!= j)
				return 0;
	return 1;
}

void solve()
{
	double part = 1;
	for(i = 1; i <= k; i++)
		part = part * p[a[i]];
	prob += part;
	nr++;
}

void back()
{
	int t = 1;
	while(t > 0)
	{
		if(t == k + 1)
		{
			solve();
			t--;

		}
		else
		{
			if(a[t] == n)
			{
				a[t] = 0;
				t--;
			}
			else
			{
				a[t]++;
				if(valid())
					a[++t] = 0;
			}
		}
	}
}
				

int main()
{
	fin >> n >> k;
	for(i = 1; i <= n; i++)
		fin >> p[i];
	back();
	fout << prob / nr;
	return 0;
}