Cod sursa(job #712227)

Utilizator misinoonisim necula misino Data 13 martie 2012 10:31:09
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<fstream>
using namespace std;
ifstream f("dezastru.in");
ofstream g("dezastru.out");
int nrp,i,n,p,x[26];
float s,a[26];
int pc(int k)
{if(k<=p&&x[k]<n)
{++x[k];
return 1;
}
return 0;
}
int valid(int k)
{int i;
for(i=1;i<k;++i)
	if(x[i]==x[k])
		return 0;
return 1;
}
int sol(int k)
{if(k==p)
	return 1;
return 0;
}
void afis(int k)
{int i;
float p;
p=1;
for(i=1;i<=k;++i)
	p=p*a[x[i]];
nrp++;
s=s+p;
}
void back()
{int k,ok;
k=1;
x[k]=0;
while(k>0)
{ok=0;
while(ok==0&&pc(k))
	if(valid(k))
		ok=1;
if(ok==0)
	--k;
else
	if(sol(k))
		afis(k);
	else
	{++k;
	x[k]=x[k-1];
	}
}}
int main()
{f>>n>>p;
for(i=1;i<=n;++i)
	f>>a[i];
back();
s=s/nrp;
g<<s<<'\n';
f.close();
g.close();
return 0;
}