Cod sursa(job #3241253)

Utilizator Gabriel_DaescuDaescu Gabriel Florin Gabriel_Daescu Data 28 august 2024 11:16:47
Problema Dezastru Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <bits/stdc++.h>
using namespace std;
ifstream  fin("dezastru.in");
ofstream fout("dezastru.out");
int n,p,s[30],u[30];
double v[30],P,S,nr;

int solutie(int k)
{
    if(k==p)
    {
        return 1;
    }
    return 0;
}

int ok(int k)
{
    if(u[s[k]]==0)
    {
        return 1;
    }
    return 0;
}


void BACK(int k)
{
    for(int i=1; i<=n; i++)
    {
        s[k]=i;

        if(ok(k))
        {
            u[i]=1;
            P=P*v[i];
            if(solutie(k))
            {
                nr++;
                S+=P;
            }
            else
            {
                BACK(k+1);
            }
            P=P/v[i];
            u[i]=0;
        }
    }
}

int main()
{
    fin>>n>>p;

    for(int i=1; i<=n; i++)
    {
        fin>>v[i];
    }

    P=1;
    nr=0;
    BACK(1);

    fout<< fixed << setprecision(6) << S/nr;

    return 0;
}