Cod sursa(job #2252146)

Utilizator BungerNadejde George Bunger Data 2 octombrie 2018 13:23:57
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin ("dezastru.in");
ofstream fout ("dezastru.out");
const int NMAX=27;
int  k,n,v[NMAX],nr;
double suma,v2[NMAX],v3[NMAX];
inline int afis()
{   nr++;
    v3[nr]=1;
  //  for(int i=1;i<=n;i++) fout<<v2[v[i]]<<" ";
    //fout<<endl;

    for(int i=1; i<=k; i++) v3[nr]*=v2[v[i]];

}
inline bool sol(int k)
{
    return (k==n);
}
bool valid (int k)
{
    for(int i=1; i<=k-1; i++)
    {
        if(v[k]==v[i]) return false;
    }
    return true;
}
int backk (int k)
{
    for(int i=1; i<=n; i++)
    {
        v[k]=i;
        if(valid(k))
        {
            if(sol(k))
            {
                afis();

            }
            else backk(k+1);

        }
    }
}
int main()
{
    fin>>n>>k;
    for(int i=1;i<=n;i++) fin>>v2[i];
    backk(1);
    for(int i=1;i<=nr;i++) suma+=v3[i];
    suma=suma/nr;
    fout<<fixed<<setprecision(7)<<suma;
    return 0;
}