Cod sursa(job #1680366)

Utilizator horatiudumhoratiu horatiudum Data 8 aprilie 2016 18:03:18
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.51 kb
#include<iostream>
#include<fstream>
#include <iomanip>
#include <string>
#include <sstream>
using namespace std;

int N,K;
double numere[25];
int poz;
//stack<double> result;
double data[25];
double probab;
double prob1=1;
//double A[25][25];

int combinari(int n,int k)
{
    if (k==0) return 1;
    else if (k>n) return 0;
    else return (combinari(n-1,k)+combinari(n-1,k-1));
}
/*
void combinationUtil(double numere[], double data[], int start, int end, int index, int k)
{
    if (index == k) {
        double prob=1;
        cout << poz << ": ";
        for (int j=0; j<k; j++) {
          prob = prob*data[j];
          cout << data[j] << " ";
        }
        cout << "\n";
        poz++;
        probab=probab+prob;
        return;
    }
    for (int i=start; i<=end && end-i+1 >= k-index; i++)
    {
        data[index] = numere[i];
        combinationUtil(numere, data, i+1, end, index+1, k);
    }
}
*/
/*
void combinationUtil(double prob, int N, int k) {
  if (k == 0) {
    probab += prob;
    ++poz;
    return;
  }
  if (N == k) {
    for(int i = N-1; i >= 0; --i)
      prob *= numere[i];
    probab += prob;
    ++poz;
    return;
  }
  combinationUtil(prob, N-1, k);
  combinationUtil(prob*numere[N-1], N-1, k-1);
}*/

double s[30][30],a[30];
int c[30][30];
int main(){
    //int nr=0;
    ifstream f("dezastru.in");
    ofstream out("dezastru.out");
    f>>N>>K;

                                //??????????
                                /*for(int i=0; i<=N; i++) {
                                    for(int j=0; j<=N; j++) {
                                            numereMatr[i][j] = " ";
                                    }
                                }*/
                                //??????????

    for (int i=1; i<=N;i++) {
        f>>numere[i];
    }

    //combinationUtil(numere, data, 0, N-1, 0, K);
    //combinationUtil(1, N, K);
    //out << setprecision(6) << (probab)/(double)(poz);


    c[0][0]=1;
    s[0][0]=1;
    for(int i=1; i<=N; ++i) {
        for(int j=0; j<=K; ++j)
        {
            c[i][j]= c[i-1][j]+ c[i-1][j-1];
            s[i][j]= s[i-1][j]+ s[i-1][j-1]*numere[i];
        }
    }/*
    for(int i=0; i<=N; ++i) {
        for(int j=0; j<=K; ++j)
        {
            cout << c[i][j] << " ";
        }
        cout << "\n";
    }*/
    /*cout << "\n";
    for(int i=0; i<=N; ++i) {
        for(int j=0; j<=K; ++j)
        {
            cout << s[i][j] << " ";
        }
        cout << "\n";
    }
    cout << "\n";*/
    out << setprecision(6) << (s[N][K])/(double)(c[N][K]);
    return 0;
}