Pagini recente » Cod sursa (job #500810) | Cod sursa (job #2283879) | Cod sursa (job #2260207) | Cod sursa (job #2538841) | Cod sursa (job #411110)
Cod sursa(job #411110)
#include <stdio.h>
#define nmax 25
float v[nmax+1];
int n,k;
float res_nr;
int res_cnt;
struct rez
{
float nr;
int cnt;
};
void readdata()
{
freopen("dezastru.in","r",stdin);
scanf("%d %d",&n,&k);
for (int i=1;i<=n;i++)
scanf("%f",&v[i]);
}
void solve()
{
rez matrix[nmax+1][nmax+1];
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
{
matrix[i][j].cnt=-1;
matrix[i][j].nr=0;
}
for (int i=1;i<=n;i++)
{
matrix[i][1].nr=v[i];
matrix[i][1].cnt=1;
}
for (int j=2;j<=k;j++)
for (int i=1;i<=n;i++)
{
for (int ii=1;ii<i;ii++)
{
if (matrix[ii][j-1].cnt!=-1)
matrix[i][j].nr+=matrix[ii][j-1].nr*v[i];
if (matrix[i][j].cnt==-1)
matrix[i][j].cnt=matrix[ii][j-1].cnt;
else
matrix[i][j].cnt+=matrix[ii][j-1].cnt;
}
}
for (int i=1;i<=n;i++)
{
if (matrix[i][k].cnt!=-1)
{
res_nr+=matrix[i][k].nr;
res_cnt+=matrix[i][k].cnt;
}
}
}
void writedata()
{
freopen("dezastru.out","w",stdout);
printf("%.6f",res_nr/res_cnt);
}
int main()
{
readdata();
solve();
writedata();
return 0;
}