Cod sursa(job #369001)

Utilizator dead_knightTitei Paul Adrian dead_knight Data 26 noiembrie 2009 20:37:18
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
//  http://infoarena.ro/problema/dezastru
#include<iostream>
#include<fstream>
using namespace std;
int n,k,x[20];
float p[26],pa=1,pt,nrc;
FILE * fin, * fout;

void back(int j)
{
    int i;
    for(i=x[j-1]+1;i<=n;i++)
    {
        x[j]=i;
        pa*=p[x[j]];
        if(j==k)
        {
            pt+=pa;
            nrc++;
        }
        else
            back(j+1);
        pa/=p[x[j]];
    }
}

int main()
{
    fin = fopen ("dezastru.in", "r");
    fout = fopen ("dezastru.out","w");
    fscanf(fin,"%d %d", &n, &k);
    for(int i=1;i<=n;i++)
        fscanf(fin, "%f",&p[i]);
    back(1);

    pt=pt/nrc;
    //fprintf(fout,"%d %d \n", n, k);
    //for(int i=1;i<=n;i++)
    //    fprintf(fout, "%.2f",p[i]);
    fprintf(fout,"%.6f", pt);
    return 0;
}