Cod sursa(job #1867943)

Utilizator caesar2001Stoica Alexandru caesar2001 Data 4 februarie 2017 14:07:02
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <cstdio>
#include <bitset>

FILE *in,*out;

using namespace std;

int h,pasi = 0,n;

double v[26],sol[26],s;

bitset <26> verifica;

void explore(int k)
{
    if(k == h)
    {
        double r = 1;
        for(int i = 1;i <= h;i ++)
        {
            r = r * sol[i];
            pasi ++;
        }
        s += r;
    }
    else
    {
        for(int i = 1;i <= n;i ++)
        {
            if(verifica[v[i]] == 0)
            {
                verifica[v[i]] = 1;
                sol[k] = v[i];
                explore(k+1);
                verifica[v[i]] = 0;
            }
        }
    }
}

int main()
{
    in = fopen("dezastru.in","r");
    out = fopen("dezastru.out","w");
    fscanf(in,"%d %d",&n,&h);
    for(int i = 1;i <= n;i ++)
        fscanf(in,"%d",&v[i]);
    double rez;
    explore(1);
    printf("%lf %d",s,pasi);
    rez = s/pasi;
    fprintf(out,"%lf",rez);

    return 0;
}