Cod sursa(job #1210029)

Utilizator IulianBoboUAIC Boboc Iulian IulianBobo Data 19 iulie 2014 02:23:29
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <iostream>
#include <fstream>
using namespace std;
double sum = 0.0;
int n, k, i,sol[26],total;
double v[26];
void computeSum()
{
	double prod=1.0;
	prod = v[sol[1]];
	for (i = 2; i <= k; ++i) prod *= v[sol[i]];
	sum += prod;
}
void bkt(int p)
{
	int i;
	for (i = sol[p-1]+1; i <=n-k+p; ++i)
	{
		sol[p] = i;
		if (p == k) computeSum();
		else bkt(p + 1);
	}
}
int combinari(int n, int k)
{
	int prod=1,i;
	if (n - k > k)
	{
		for (i = n - k + 1; i <= n; ++i)
		{
			prod *= i;
		}
		for (i = 2; i <= k; ++i)
		{
			prod /= i;
		}
		cout << prod;
	}
	else
	{
		for (i = k + 1; i <= n; ++i)
		{
			prod *= i;
		}
		for (i = 2; i <= n-k; ++i)
		{
			prod /= i;
		}
		cout << prod;
	}
	return prod;
}
int main()
{
	FILE *f, *g;
	fopen_s(&f,"dezastru.in", "r");
	fopen_s(&g,"dezastru.out", "w");
	fscanf_s(f, "%d%d", &n, &k);
	cout << n << " " << k << "\n";
	for (i = 1; i <= n; ++i)
	{
		fscanf_s(f, "%lf", &v[i]);
		cout << v[i] << " ";
	}
	total = combinari(n, k);
	bkt(1);
	cout << sum/3;
	fclose(f);
	fclose(g);
	return 0;
}