Cod sursa(job #478549)

Utilizator miculprogramatorA Cosmina - vechi miculprogramator Data 19 august 2010 05:08:56
Problema Dezastru Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
/* Folosim recursivitatea pt generarea combinarilor (n, x)*/
#include <stdio.h>
using namespace std;

int c[30];
float nr[30];
float rez;
int n, m, j;
int nr_comb;

void combinari (int k)
{
    int i;
    float produs = 1;

    if (k - 1 == m)
    {
        for (i=1; i<=m; ++i)
            produs *= nr[c[i]];
        produs *= 2;
        rez += produs;
        nr_comb ++;
    }
    else
    {
        for (i=c[k-1]+1; i<=n - m + k; ++i)
        {
            c[k] = i;
            combinari (k + 1);
        }
    }
}

int main ()
{
    FILE *f = fopen ("dezastru.in","r");
    FILE *g = fopen ("dezastru.out","w");
    fscanf (f,"%d %d", &n, &m);
    for (j=1; j<=n; ++j)
        fscanf (f,"%f", &nr[j]);

    combinari (1);
    nr_comb *= 2;
    rez /= nr_comb;
    fprintf (g, "%.6f", rez);

    fclose (g);
    fclose (f);
    return 0;
}