Cod sursa(job #1908649)

Utilizator traian1999traian antonovici traian1999 Data 7 martie 2017 09:51:05
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <iostream>
#include <algorithm>
#include <iomanip>
#include <fstream>

using namespace std;
ifstream f("dezastru.in");
ofstream g("dezastru.out");
int a[100];
double b[100];
double jmenar=0;
void afisare(int n,int a[])
{
    int i;
    double jmenarius;
    jmenarius=1;
    for(i=1;i<=n;i++)
        jmenarius=b[a[i]]*jmenarius;
        jmenar=jmenarius+jmenar;
}
void mi_next_aranjamentation(int i,int n,int k)
{
    int maxx;
    int v;
    int j;
    maxx=0;
    for(j=1;j<=i-1;j++)
        if(a[j]>maxx)
        maxx=a[j];
    for(int val=1+maxx;val<=n;val++)
    {
        a[i]=val;
        for(v=1;v<=i;v++)
        {

           swap(a[v],a[i]);
        if(i<k)
            mi_next_aranjamentation(i+1,n,k);
        else
            afisare(k,a);
            swap(a[v],a[i]);
        }

    }
}
int factorial(int n)
{
    int i;
    int p=1;
    for(i=1;i<=n;i++)
        p=p*i;
    return p;
}
int main()
{
    int n,k;
    f>>n>>k;
    int nr=factorial(n);
    int i;
    for(i=1;i<=n;i++)
    {
        f>>b[i];
        a[i]=i;
    }
    mi_next_aranjamentation(1,n,k);
    g<<fixed<<setprecision(6)<<jmenar/nr<<'\n';
    return 0;
}