Pagini recente » Cod sursa (job #2273548) | Cod sursa (job #1172938) | Cod sursa (job #2740153) | Cod sursa (job #2717353) | Cod sursa (job #2227931)
#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 = 0;
float sum = 0,inm = 1;
for (i = 0 ; i != comb; i++){
inm *= arr[i];
valori++;
dez.push(i);
}
val++;
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;
val++;
continue;
}
dez.pop();
inm = inm / arr[r]*arr[r + 1];
dez.push(r + 1);
if(valori == comb) {
sum+=inm;
val++;
}
}
out<<sum/val<<endl;
return 0;
}