Cod sursa(job #1908809)

Utilizator IstrateSamuelIstrate Samuel IstrateSamuel Data 7 martie 2017 10:32:36
Problema Dezastru Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

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

int n, k, x[30], nr=1;
float t[30], S=0;

void numar ()
{
    int s=k; int n1=n;

    while (s)
    {
        nr*=n1;
        n1--; s--;
    }
}

void afisare()
{
    float f=1;
    int i;

    for (i=1; i<=k; i++)
       f*=t[x[i]];

    S+=f/nr;
}

void A(int i)
{
    int maxx=*max_element(x, x+i);

    for (int val=1+maxx; val<=n; val++)
    {
        x[i]=val;

        for (int v=1; v<=i; v++)
        {
            swap(x[v], x[i]);
            if (i<k)
                A(i+1);
            else
                afisare();
            swap(x[v], x[i]);
        }
    }
}

int main()
{
    f >> n >> k;

    for (int i=1; i<=n; i++)
        f >> t[i];

    numar();

    A(1);

    g << S;


}