Pagini recente » Cod sursa (job #3226579) | Diferente pentru preoni-2007/runda-1 intre reviziile 10 si 22 | Statisticile problemei Pari | Panouri | Cod sursa (job #2003313)
#include <fstream>
using namespace std;
int n, m, nrc, m1;
double a[28], sol;
inline void back(int k, int s, double sum)
{
if (k == m1)
{
sol += sum;
nrc++;
}
else
for (int i=s + 1; i<=n-m+k; i++)
back(k+1, i, sum*a[i]);
}
int main()
{
ifstream f("dezastru.in");
f>>n>>m;
int i;
for (i=1; i<=n; i++)
f>>a[i];
f.close();
m1 = m + 1;
back(1, 0, 1);
ofstream g("dezastru.out");
g<<sol/nrc<<"\n";
g.close();
return 0;
}
/*#include <fstream>
#include <cstdio>
using namespace std;
int n, m, t[30][30], nrc, c[28];
double a[28], sol;
void Read()
{
ifstream f("dezastru.in");
f>>n>>m;
int i;
for (i=1; i<=n; i++)
f>>a[i];
f.close();
}
void GenComb()
{
int i, j;
for (i=0; i<28; i++)
t[i][i] = t[i][0] = 1;
for(i=1; i<28; i++)
for(j=1; j<i; j++)
t[i][j] = t[i-1][j] + t[i-1][j-1];
}
inline void back(int k, int s, double sum)
{
if (k-1 == m)
{
sol += sum;
}
else
{
int i;
for (i=s + 1; i<=n-m+k; i++)
{
back(k+1, i, sum*a[i]);
}
}
}
void Solve()
{
GenComb();
nrc = t[n][m];
back(1, 0, 1);
}
void Write()
{
freopen("dezastru.out", "w", stdout);
printf("%.6lf\n", sol/nrc);
}
int main()
{
Read();
Solve();
Write();
return 0;
}
*/