Cod sursa(job #897598)

Utilizator micuhdPop Claudiu micuhd Data 27 februarie 2013 21:21:58
Problema Dezastru Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <iostream>
#include <fstream>
using namespace std;


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

float prob[26];
int n,K;
int x[26],atac=0,proba,supra,posib;
float probfinal;

void afisare(void)
{
int i;
float atac;
    atac=prob[x[1]];
    for(i=2;i<=K;i++)
        atac=atac*prob[x[i]];
    probfinal=probfinal+(atac/posib);

    //for(i=1;i<=K;i++)
     //   cout<<x[i]<<" ";
   // cout<<"\n";
}
int continuare(int k)
{
int i,ok=1;
    for(i=1;i<k;i++)
        if(x[i]==x[k])
            ok=0;
    return ok;
}
void back(void)
{
int k;
    k=1;
    while(k>0)
    {
        if(k==K+1)
        {
            afisare();
            k--;
        }
        else if(x[k]<n)
        {
            x[k]++;
            if(continuare(k)==1)
                k++;
        }
        else
        {
            x[k]=0;
            k--;
        }
    }
}
int main()
{
int i;
    f>>n>>K;
    proba=1;
    for(i=1;i<=n;i++)
    {
        f>>prob[i];
        proba=proba*i;
        if(i==n-K)
            supra=proba;
    }
    posib=proba/supra;
    back();
    g<<probfinal;
    //cout <<(0.15/6 + 0.24/6 + 0.15/6 + 0.40/6 + 0.24/6 + 0.40/6);
    return 0;
}