Cod sursa(job #2361476)

Utilizator AlexTudorAlex Brinza AlexTudor Data 2 martie 2019 16:06:53
Problema Dezastru Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <bits/stdc++.h>
using namespace std;

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

long long n,ct,x;

float val[26],p=1.0;

int r[26];

vector < float > v;

void read()
{
    fin>>n>>x;

    for(int i=1;i<=n;++i) fin>>val[i];

}

void back(int k)
{

    for(int i=r[k-1]+1;i<=n;++i)
        {

            r[k]=i;
            if(k==x)
            {
             p*=val[i];
             v.push_back(p);
             v.push_back(p);
             p/=val[i];
            }
            else
                if(k==1)
                {
                 p=val[i];
                 back(2);
                 p/=val[i];
                }
                else
                {
                    p*=val[i];
                    back(k+1);
                    p/=val[i];
                }
        }
}

int main()
{
    read();
    back(1);
    ct=v.size();

    float rez=0.0;
    float nr=1.0*ct;

    for(int i=0;i<ct;++i)
    {
        rez+=1.0*(v[i]/(1.0*nr));
    }

    fout << fixed << setprecision(6) << ( float ) rez << '\n';
    return 0;
}