Cod sursa(job #2493396)

Utilizator Moldovan_Andrei112002Moldovan Andrei Moldovan_Andrei112002 Data 16 noiembrie 2019 12:00:15
Problema Dezastru Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <bits/stdc++.h>
#include <iomanip>
using namespace std;
ifstream fin("dezastru.in");ofstream fout("dezastru.out");
vector<double>v;
vector<double>rez;
vector<double>::iterator it;
int n,k,st[30],nrp;
double val=0;
bool validare(int niv)
{
    int i;
    for(i=1;i<niv;i++)
    {
        if(st[niv]==st[i])
            return 0;
    }
    return 1;
}
bool is_solutie(int niv)
{
    if(niv==k)
        return 1;
    else
        return 0;
}
void prd(int niv)
{
    double p=1;
    for(int i=1;i<=niv;i++)
    {
        p*=(double)v[st[i]];
    }
    rez.push_back(p);
}
void bck(int niv)
{
    int i;
    for(i=1;i<=n;i++)
    {
        st[niv]=i;
        if(validare(niv)==1)
        {
            if(is_solutie(niv)==1)
            {
                nrp+=1;
                prd(niv);
            }else
            {
                bck(niv+1);
            }
        }
    }
}
int main()
{
    fin>>n>>k;
    v.push_back(0);rez.push_back(0);
    for(int i=1;i<=n;i++)
    {
        double x;fin>>x;
        v.push_back(x);
    }
    bck(1);
    double s=0;
    for(it=rez.begin()+1;it<rez.end();it++)
    {
        s+=(double)*it/nrp;
    }
    fout<<fixed<<setprecision(6)<<s;
}