Cod sursa(job #2504693)

Utilizator lucianistratiIstrati Lucian lucianistrati Data 5 decembrie 2019 13:04:22
Problema Dezastru Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <iostream>
#include <fstream>
#include <bits/stdc++.h>
#include <map>
#define pb push_back
#define ll long long
using namespace std;
int N,K;
double factorial;
double v[30];
double ans;

void calculare_prob(int c[],int k)
{
    int i,ok=0;
    double prod=1;
   // if(k+1<K)
    //{
      //  return;
    //}
   for(i=0;i<=k;i++)
    {
        cout<<c[i]<<" ";
    }
    cout<<"\n";
    for(i=0;i<=K-1;i++)
    {
        prod*=v[c[i]];
    }
    cout<<prod<<"\n";
    ans+=prod;
}
void comb(int p,int k,int n,int c[])
{
    if(p==k+1)
    {
        calculare_prob(c,k);
        return;
    }
    int i;
    for(i=c[p-1]+1;i<=n;i++)
    {
        c[p]=i;
        comb(p+1,k,n,c);
    }
}
void reinit(int c[])
{
    for(int i=0;i<=26;i++)
    {
        c[i]=0;
    }
}
int main()
{
    int i,c[30];
    ifstream fin("z.in");
    ofstream fout("z.out");
    fin>>N>>K;
    factorial=1;
    for(i=2;i<=N;i++)
    {
        factorial*=i;
    }
    for(i=0;i<=N-1;i++)
    {
        fin>>v[i];
    }
    //for(i=0;i<=N-1;i++)
   // {
        reinit(c);
        comb(1,K,N,c);
    //}
    cout << setprecision(6) << ans/factorial << '\n';
    fin.close();
    fout.close();
    return 0;
}