Cod sursa(job #218067)

Utilizator zobicaMarin Marin zobica Data 31 octombrie 2008 18:22:57
Problema Dezastru Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb

    #include<stdio.h>

    int n,m,sol[26];
    long long nr = 0;
    double a[26], s, p;

    void back_iter() {
        int k = 1;
        sol[k] = sol[k -1];
        while (k >0)
            if (sol[k] < n - m + k) {
                sol[k]++;
                if (k == m) {
                    p = 1;
                    for(int v = 1; v <= m; v++)
                        p *= a[sol[v]];
                    s += p;
                    nr++;
                }
                else
                    sol[++k] = sol[k-1];
            }
            else
                k--;
    }

    void citire() {
       freopen("dezastru.in","r",stdin);
       scanf("%d %d", &n,&m);
       for(int i = 1; i <= n; i++)
           scanf("%lf", &a[i]);
    }


    int main() {
       citire();
       back_iter();
       freopen("dezastru.out","w",stdout);
       printf("%lf", s / nr);
       return 0;
    }