Pagini recente » Cod sursa (job #2714137) | Cod sursa (job #1440951) | Cod sursa (job #2407849) | Cod sursa (job #2543648) | Cod sursa (job #1638686)
#include<fstream>
#define MNOA 27 // maximum number of attacks
using namespace std;
FILE*in;
FILE*out;
int nr_of_attacks; // ~N
int nr_of_attacks_with_shield; // ~K
double EARTH[MNOA][MNOA];
double attack_probability[MNOA];
double nr_of_combinations[MNOA][MNOA];
void read()
{
in=fopen("dezastru.in", "r");
fscanf(in, "%d%d", &nr_of_attacks, &nr_of_attacks_with_shield);
for (int i=1; i<=nr_of_attacks; i++)
fscanf(in, "%lf", &attack_probability[i]);
}
void initialize_EARTH() // and nr_of_combinations
{
for (int i=0; i<=nr_of_attacks; i++)
EARTH[i][0]=nr_of_combinations[i][0]=1;
}
void build_EARTH() // and nr_of_combinations
{
for (int i=1; i<=nr_of_attacks; i++)
for (int j=1; j<=nr_of_attacks_with_shield; j++)
{
EARTH[i][j]=EARTH[i-1][j]+EARTH[i-1][j-1]*attack_probability[i];
nr_of_combinations[i][j]=nr_of_combinations[i-1][j]+nr_of_combinations[i-1][j-1];
}
}
void solve()
{
initialize_EARTH();
build_EARTH();
}
void show()
{
out=fopen("dezastru.out", "w");
fprintf(out, "%.6lf", (double)EARTH[nr_of_attacks][nr_of_attacks_with_shield]/nr_of_combinations[nr_of_attacks][nr_of_attacks_with_shield]);
}
int main()
{
read();
solve();
show();
return 0;
}