Pagini recente » Cod sursa (job #821380) | Cod sursa (job #2108421) | Cod sursa (job #2384016) | Sandbox (cutiuţa cu năsip) | Cod sursa (job #415702)
Cod sursa(job #415702)
#include<stdio.h>
float v[26],suma=1.0;
int x[26],car[27],ind,as,n,k,sol;
void read()
{
FILE*f=fopen("dezastru.in","r");
fscanf(f,"%d%d",&n,&k);
int i=0;
for(;i<n;++i)
fscanf(f,"%f",&v[i]);
fclose(f);
}
int verif()
{
int i;
for(i=x[ind]+1;i<n;++i)
if(car[i])return 1;
return 0;
}
void succesor()
{
int init=x[ind];
as=0;
if(x[ind]<n)
do
{
++x[ind];
if(!car[x[ind]])
{as=1;car[init]=0;car[x[ind]]=1;}
}while(x[ind]<n&&car[x[ind]]&&!as&&verif());
if(!as){x[ind]=init;}
else {suma*=v[x[ind]-1];}
if(init-1>=0)
suma/=v[init-1];
}
int main()
{
read();
float var=0.0;
while(ind>=0)
{
succesor();
if(as)
{
if(ind==k-1)
{
var+=suma;
++sol;
}
else {++ind;x[ind]=0;}
}
else {car[x[ind]]=0;--ind;}
}
FILE*g=fopen("dezastru.out","w");
fprintf(g,"%f\n",var/sol);
fclose(g);
return 0;
}