Cod sursa(job #726783)

Utilizator mirceadinoMircea Popoveniuc mirceadino Data 27 martie 2012 15:23:23
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<cstdio>
#include<iostream>
#include<fstream>
using namespace std;
double sum,a[30],medie;
int n,k,nr,st[30];
void aduna(int p)
{
    double P=1;
    for(int i=1;i<=p;i++) P=P*a[st[i]];
    medie+=P;
    nr++;
}
int conditie(int p)
{
    for(int i=1;i<p;i++) if(st[i]==st[p]||st[i]>st[p]) return 0;
    return 1;
}
void back(int p)
{
    for(int i=1;i<=n;i++)
    {
        st[p]=i;
        if(conditie(p))
        {
            if(p==k) aduna(p);
            else back(p+1);
        }
    }
}
int main()
{
    freopen("dezastru.in","r",stdin);
    freopen("dezastru.out","w",stdout);
    scanf("%d %d",&n,&k);
    for(int i=1;i<=n;i++) cin>>a[i];
    back(1);
    printf("%.6f",(double)(medie/nr));
}