Pagini recente » Cod sursa (job #898675) | Cod sursa (job #1588972) | Cod sursa (job #1695038) | Cod sursa (job #1944872) | Cod sursa (job #371552)
Cod sursa(job #371552)
#include<stdio.h>
#include<stdlib.h>
int n, k, x[26];
double probtotal=0, p[26], nrcomb=0;
void read_data()
{
freopen("dezastru.in", "r", stdin);
scanf("%d%d", &n, &k);
for(int i=1; i<=n; scanf("%lf", &p[i++]));
fclose(stdin);
}
void write_data()
{
probtotal/=nrcomb;
freopen("dezastru.out","w", stdout);
printf("%f\n", probtotal);
fclose(stdout);
}
int cck(int i)
{
if (x[i]<=x[i-1] && i>1) return 0;
return 1;
}
void solve()
{
double prob=1;
int i=1;
x[i]=0;
while(i>0)
{
while(x[i]<n)
{
x[i]++;
if (cck(i))
{
if(i==k)
{
prob*=p[x[i]];
probtotal+=prob;
nrcomb+=1;
prob/=p[x[i]];
}
else {prob*=p[x[i]];x[++i]=0;}
}
}
prob/=p[x[--i]];
}
}
int main()
{
read_data();
solve();
write_data();
return 0;
}