Pagini recente » Cod sursa (job #1520083) | Cod sursa (job #448569) | Cod sursa (job #190915) | Cod sursa (job #1266748) | Cod sursa (job #365099)
Cod sursa(job #365099)
#include<iostream>
#include<fstream>
#define inf "dezastru.in"
#define outf "dezastru.out"
#define MaxN 26
using namespace std;
fstream f(inf,ios::in),g(outf,ios::out);
int N,P,k,st[MaxN];
float prob[MaxN],suma,produs;
void Citire()
{
f>>N>>P;
for(int i=1;i<=N;i++)f>>prob[i];
}
void Init()
{
if(k==1)st[k]=0;
else st[k]=st[k-1];
}
int Succesor()
{
if(st[k]<N-P+k)
{
st[k]++;
return 1;
}
return 0;
}
int Valid()
{
return 1;
}
int Solutie()
{
return (k==P);
}
void Back()
{
int AS;
k=1;
Init();
while(k>0)
{
do{}while ( (AS=Succesor()) && !Valid() );
if(AS)
{
if(Solutie())
{
produs=1;
for(int i=1;i<=P;i++)produs*=prob[st[i]];
suma+=produs;
}
else {k++;Init();}
}
else k--;
}
}
int main()
{
Citire();
Back();
g<<suma/3;
f.close();
g.close();
return 0;
}