Cod sursa(job #2429880)

Utilizator rd211Dinucu David rd211 Data 11 iunie 2019 17:53:47
Problema Dezastru Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
int A[30],k,n;
long long contor;
float val[30],sum;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");

bool isValid(int pos)
{
    for(int i = 1;i<pos;i++)
        if(A[i]==A[pos])
            return false;
    return true;
}
void tipar()
{
    float tmp=1.0f;
    for(int i = 1;i<=k;i++)
        tmp*=val[A[i]];
    sum+=tmp;
    contor++;
}
bool isSol(int pos)
{
    if(pos==k)
        return true;
    return false;
}
void backt(int pos)
{
    for(int x = 1;x<=n;x++)
    {
        A[pos]=x;
        if(isValid(pos))
        {
            if(isSol(pos))
            {
                tipar();
            }
            else
            {
                backt(pos+1);
            }
        }
    }
}
int main()
{
    fin>>n>>k;
    for(int i = 1;i<=n;i++)
        fin>>val[i];
    backt(1);
    float m = (float)sum/contor;
    fout<<setprecision(6)<<fixed<<m;
    fout.close();
    return 0;
}