Cod sursa(job #177430)

Utilizator A-TeamKovago L si Albert I A-Team Data 12 aprilie 2008 22:20:06
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<stdio.h>
FILE *in=fopen("dezastru.in","r"),*out=fopen("dezastru.out","w");
int st[26],n,k,nr=0;
float v[26],mat[26][26],s=0;
void initializari()
{
	fscanf(in,"%d %d",&n,&k);
	for(int i=1;i<=n;i++)
		fscanf(in,"%f",&v[i]);
	for(i=1;i<=n+1;i++)
		st[i]=0;
}
int valid(int p)
{
	if(p && st[p]<=st[p-1]) return 0;
	return 1;
}
void bktr(int p)
{
	int pval;
	for(pval=1;pval<=n;pval++)
	{
		st[p]=pval;
		if(valid(p))
			if(p==k)
			{
				nr++;mat[nr][0]=1;
				for(int x=1;x<=k;x++)
				{
					mat[nr][0]*=v[x];
					mat[nr][x]=st[x];
				}
			}
		else bktr(p+1);
	}
}
int main()
{
	initializari();
	bktr(1);
	for(int i=1;i<=nr;i++)
		s+=mat[i][0]/nr;
	fprintf(out,"%.6f",s);
	fcloseall();
	return 0;
}