Cod sursa(job #1721121)

Utilizator Mihai7Gheoace Mihai Mihai7 Data 24 iunie 2016 15:38:23
Problema Dezastru Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <cstdio>
using namespace std;
int main()
{
    FILE *f=freopen("dezastru.in","r",stdin),
    *g=freopen("dezastru.out","w",stdout);
    double perm[27], v=0,val[26];
    short n,k,st[26],niv,cnt=0,i;
    scanf("%hd %hd",&n,&k);
    for(i=1;i<=n;++i)
        scanf("%lf",&val[i]);
    perm[0]=1;
    for(i=1;i<=k;++i)
        perm[i]=perm[i-1]*i;
    st[0]=0;
    niv=1;st[niv]=st[niv-1];
    bool s;
    while(niv)
    {
        if(st[niv]<n)
            {++st[niv];s=1;}
            else s=0;
        if(s)
            if(niv==k)
                {
                    double p=1;cnt+=perm[k];
                    for(i=1;i<=k;++i)
                        p*=val[st[i]];
                    v+=p*perm[k];
                }
                else ++niv,st[niv]=st[niv-1];
           else --niv;
    }
    printf("%f",v/cnt);
}