Cod sursa(job #1274954)

Utilizator GrandmasterSoucup Bogdan Grandmaster Data 24 noiembrie 2014 16:48:21
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <iostream>
#include <fstream>
#include <iomanip>
#include <algorithm>
#include <set>
#include <vector>
#include <map>
#include <queue>
#include <stack>
#include <utility>
#include <string>
#include <cstring>
#include <cctype>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <limits>
#include <sstream>
#include <deque>
#include <bitset>
#include <complex>
#include <functional>
#include <memory>
#include <numeric>
#define x first
#define y second
typedef std::pair<int, int> pii;
using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
int n, x[100], y[100], m, b, sl = 1;
float a[100], s, sum = 0;
void factorial(int n)
{
	for(int i = 2; i <= n; i++)
		sl *= i;
}
void back(int k)
{
	if(k - 1 == m)
	{
		s = a[x[1]];
		for(int i = 2; i <= m; i++)
			s *= a[x[i]];
		sum += s/sl;
	}
	else
		for(int i = 1; i <= n; i++)
		{
			if(y[i] == 0 && x[k - 1] < i)
			{
				x[k] = i;
				y[i] = 1;
				back(k + 1);
				y[i] = 0;
			}
		}
}

int main () {
	fin >> n >> m;
	b = n;
	for(int i = 1; i <= n; i++)
		fin >> a[i];
	factorial(b);
	back(1);
	setprecision(6);
	fout << sum * 2;
	return 0;
}