Cod sursa(job #3289635)

Utilizator Luca_georgescuLucageorgescu Luca_georgescu Data 27 martie 2025 18:29:07
Problema Dezastru Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("dezastru.in");
ofstream g("dezastru.out");

double a[30],sum;
bool fr[30];
int sol[30],n,p;

void aduna()
{
    double prod=1;
    for (int i=1; i<=p; i++ )
        prod*=a[sol[i]];
    sum+=prod;
}

void back(int k)
{
    if ( k>n )
        aduna();
    else
    {
        for (int i=1; i<=n; i++ )
        {
            if ( !fr[i] )
            {
                sol[k]=i;
                fr[i]=true;
                back(k+1);
                fr[i]=false;
            }
        }
    }
}

int main()
{
    f >> n >> p;
    for (int i=1; i<=n; i++ )
        f >> a[i];

    double fact=1;
    for (int i=1; i<=n; i++ )
        fact=fact*i;

    back(1);
    g << fixed << setprecision(6) << sum/fact;
    return 0;
}