Cod sursa(job #2682950)

Utilizator Wister1043Silaghi Razvan-Andrei Wister1043 Data 9 decembrie 2020 23:50:48
Problema Dezastru Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("dezastru.in");
ofstream fout("dezastru.out");

double v[26];
int x[26];
int N,K;
double s=0;
int m;

void calcul()
{
    double k=1;
    for(int i=1;i<=K;i++)
    {
        k*=v[x[i]];
    }
    s+=k;
    m++;
}

int sol(int p)
{
    for(int i=1;i<p;i++)
    {
        if(x[i]>=x[p])
        {
            return 0;
        }
    }
    return 1;
}

int main()
{
    fin>>N>>K;
    for(int i=1;i<=N;i++)
    {
        fin>>v[i];
    }
    int p=1;
    x[p]=0;
    while(p>0)
    {
        if(p<=K)
        {
            if(x[p]<N)
            {
                x[p]++;
                if(sol(p))
                {
                    if(p==K)
                    {
                        calcul();
                    }
                    else
                    {
                        p++;
                        x[p]=x[p-1];
                    }
                }
            }
            else
            {
                p--;
            }
        }
    }
    fout.precision(7);
    fout<<(s/m);
    return 0;
}