Cod sursa(job #686500)

Utilizator dsfm_danielaasd mghd dsfm_daniel Data 21 februarie 2012 17:30:07
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <stdio.h>
using namespace std;

int st[26],factorial,n,K;
float suma,v[26];

int valid(int k)
{ 
	for(int i=1;i<=k-1;i++)
		if (st[i]==st[k])
			return 0;
	return 1;
}
 

void back(int k)
{
	float pr;
	for(int i=1;i<=n;i++)
	{
		pr=1;
		st[k]=i;
		if (valid(k))
		{	if(k==K)
			{
				for (int j=1;j<=k;j++)
					pr=pr*v[st[j]];
				suma=suma+pr/factorial;
			}
			else
				back(k+1);
		}
	}
}

int main (void)
{
	FILE *f1,*f2;
	f1=fopen("dezastru.in","r");
	f2=fopen("dezastru.out","w");
	
	int i;
	suma=0;
	fscanf(f1,"%d %d",&n,&K);
	factorial=1;
	for (i=1;i<=n;i++)
	{
		factorial=factorial*i;
		fscanf(f1,"%f ",&v[i]);
	}
	back(1);
	fprintf(f2,"%f",suma);
	fclose(f1);
	fclose(f2);
	return 0;
}