Mai intai trebuie sa te autentifici.
Cod sursa(job #1325365)
| Utilizator | Data | 23 ianuarie 2015 20:37:50 | |
|---|---|---|---|
| Problema | Dezastru | Scor | 70 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 1.09 kb |
#include <iostream>
#include <fstream>
using namespace std;
int permutari[26],n,k,total;
double d,dez[26];
void rez(int ajuns,int numar,double produs);
void continua(int ajuns,int numar,double produs)
{
register int i;
static int verific[26];
bool inceput=0;
if (inceput==0)
{
inceput=1;
for (i=1;i<=25;i++)
{
verific[i]=0;
}
}
verific[permutari[numar-1]]=1;
for (i=ajuns+1;i<=n;i++)
{
if (verific[i]==0)
{
permutari[numar]=i;
rez(i,numar+1,produs*dez[i]);
}
}
verific[permutari[numar-1]]=0;
}
void rez(int ajuns,int numar,double produs)
{
if (ajuns<n&&numar<=k&&n-ajuns>=k-numar)
{
continua(ajuns,numar,produs);
}
else if (numar==k+1)
{
total++;
d+=produs;
}
}
int main()
{
ifstream in("dezastru.in");
ofstream out("dezastru.out");
int i,j;
in>>n;
in>>k;
for (i=1;i<=n;i++)
{
in>>dez[i];
}
rez(0,1,1);
d/=total;
out<<d;
}
