Cod sursa(job #1649798)

Utilizator lauratalaatlaura talaat lauratalaat Data 11 martie 2016 15:09:22
Problema Dezastru Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<stdio.h>
double v[25];
int n,p,st[25];
double afisare () {
    int i;
    float rez=1;
    for(i=1;i<=p;i++)
        rez=rez*v[st[i]];
    return rez;
}
int valid ( int k ){
    int pp=1,i;
    for(i=k-1;i>=1&&pp==1;i--)
        if(st[k]==st[i])
            pp=0;
    return pp;
}
void bkt ( int k ,double &s){
    int i;
    if(k==p+1)
        s=s+afisare();
    else
        for(i=1;i<=n;i++){
            st[k]=i;
            if(valid(k)==1)
                bkt(k+1,s);
        }
}
int main(){
    int i,cate;
    double s=0;
    freopen("dezastru.in","r",stdin);
    freopen("dezastru.out","w",stdout);
    scanf("%d%d",&n,&p);
    for(i=1;i<=n;i++)
        scanf("%lf",&v[i]);
    bkt(1,s);
    cate=1;
    for(i=n-p+1;i<=n;i++)
        cate=cate*i;
    printf("%lf\n",s/cate);
    return 0;
}