Cod sursa(job #2670405)

Utilizator csamoilasamoila ciprian casian csamoila Data 9 noiembrie 2020 20:39:34
Problema Dezastru Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <bits/stdc++.h>

using namespace std;

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

int N,K;
double V[30];
int SOL[30];
double rez;
int nr;

int verif(int a[])
{
    int F[30]={0};
    for(int i=1;i<=N;i++)
    {
        if(F[a[i]]>0) return 0;
        F[a[i]]++;
    }
    return 1;
}

void g(int k)
{
    if(k==N)
    {
        if(!verif(SOL)) return;
        double p=(double)1;
        for(int i=1;i<=K;i++)
        {
            p*=V[SOL[i]];
        }
        rez+=p;
        nr++;
    }
    else
        for(int i=1;i<=N;i++)
        {
            SOL[k+1]=i;
            g(k+1);
        }
}

int main()
{
    fin >> N >> K;
    for(int i=1;i<=N;i++)
        fin >> V[i];
    g(0);
    fout << fixed << setprecision(6) << rez/(double)nr;
    return 0;
}