Cod sursa(job #1981628)

Utilizator Cristi01052Tudorache Christian Cristi01052 Data 16 mai 2017 12:09:34
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<stdio.h>
FILE *in = fopen("dezastru.in", "r"),
    *out = fopen("dezastru.out", "w");
using namespace std;
int n, k, c, nrsol;
double s = 0;
const int N = 25;
bool viz[N];
int v[N];
double p[N], prob = 1;
void bkt()
{
    if(c == k)
    {
        nrsol++;
        s += prob;
        return;
    }

    int i;
    for(i = v[c] + 1; i <= n; i++)
        {
            if(viz[i] == false)
            {
                prob *= p[i];
                viz[i] = true;
                v[++c] = i;
                bkt();
                prob /= p[i];
                viz[i] = false;
                --c;
            }
        }
}
int main(){

    int i;
    fscanf(in, "%d%d", &n, &k);
    for(i = 1; i <= n; i++)
        fscanf(in, "%lf", &p[i]);
    bkt ();
    fprintf (out, "%.6lf", s / nrsol);
    return 0;
}