Cod sursa(job #2908043)

Utilizator sergi.uamSergiu Amzuloiu sergi.uam Data 1 iunie 2022 11:04:17
Problema Dezastru Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

#define N 26
double dp[N][N]={0}, v[N]={0};

int main()
{
	FILE* in = fopen("dezastru.in", "r");
	FILE* out = fopen("dezastru.out", "w");

	int n, i, j, k, k1;
	long long r = 1;

	fscanf(in, "%d%d", &n, &k);
	for (i = 1; i <= n; i++)
		fscanf(in, "%lf", &v[i]);


	for (i = 0; i <= n; i++)
		dp[i][0] = 1;

	for (i = 1; i <= n; i++)
		for (j = 1; j <= k; j++)
			dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1] * v[i];


	for (i = 0; i <= n; i++)
	{
		for (j = 0; j <= k; j++)
			printf("% lf", dp[i][j]);
		printf("\n");
	}

	if (2 * k < n)
		k1 = n - k;
	else
		k1 = k;

	for (i = k1 + 1; i <= n; i++)
		r = r * i;

	for (i = 1; i <= n - k1; i++)
		r = r / i;

	fprintf(out, "%6lf", dp[n][k] / r);

	fclose(in);
	fclose(out);
	return 0;
}