Cod sursa(job #1133984)

Utilizator blue_skyPetrica Stefan Cosmin blue_sky Data 5 martie 2014 21:22:24
Problema Dezastru Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <fstream>
#include <iomanip>
#define DIM 26

using namespace std;
short n,x,sol[DIM];
int nr;
float a[DIM],s,sansa;

void backt(int k)
{
    if(k>x)
    {
        float p=1;
        for(int i=1;i<k;++i)
        p*=a[sol[i]];
        s+=p;
        ++nr;
    }
    else
    for(int i=1;i<=n;++i)
    {
        bool ok=1;
        for(int j=1;j<k;++j)
        if(sol[j]==i) {ok=0;break;}
        if(ok)
        {
            sol[k]=i;
            backt(k+1);
        }
    }
}

int main()
{
    ifstream f("dezastru.in");
    ofstream g("dezastru.out");
    f>>n>>x;
    for(int i=1;i<=n;++i)
    f>>a[i];
    backt(1);
    sansa=(float)s/nr;
    int y=(int)sansa,cifre=0;
    while(y!=0)
    {
        ++cifre;
        y=y/10;
    }
    g<<showpoint<<setprecision(cifre+6)<<sansa<<'\n';
    f.close();
    g.close();
    return 0;
}