Cod sursa(job #2227934)

Utilizator vadim171098vadim pislari vadim171098 Data 2 august 2018 11:13:25
Problema Dezastru Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <iostream>
#include <fstream>
#include <stack>
#define MAX 25

using namespace std;

int main()
{
    ifstream in("dezastru.in");
    ofstream out("dezastru.out");
    int nr, comb, i;
    float arr[MAX];
    stack <int> dez;
    in >> nr >> comb;
    for (i = 0 ; i != nr; i++){
        in >> arr[i];
    }
    int valori = 0,val = 1;
    float sum = 0,inm = 1;

    for (i = comb + 1 ; i <= nr ;i++)
        val *= i;

    for (i = 1; i <= nr - comb; i++){
        val /= i;
    }

    for (i = 0 ; i != comb; i++){
        inm *= arr[i];
        valori++;
        dez.push(i);
    }
    sum+=inm;
    int r;
    while(valori != 0){
        r = dez.top();
        if ( r == nr - (comb - valori) - 1){
            dez.pop();
            valori --;
            inm /= arr[r];
            continue;
        }
        else if(valori != comb ){

            inm /= arr[r];
            dez.pop();
            valori--;
            while(valori!=comb){
                dez.push(r + 1);
                inm = inm * arr[r + 1];
                valori++;
                r = dez.top();
            }
            sum+=inm;
            continue;
        }
        dez.pop();
        inm = inm / arr[r]*arr[r + 1];
        dez.push(r + 1);
        if(valori == comb) {
                sum+=inm;
        }
    }
    out<<sum/val<<endl;
    return 0;
}