Pagini recente » Cod sursa (job #2788097) | Cod sursa (job #2744913) | Cod sursa (job #2905175) | Monitorul de evaluare | Cod sursa (job #3303283)
#include <bits/stdc++.h>
using namespace std;
ifstream f("dezastru.in");
ofstream g("dezastru.out");
int n,k;
double sol[30],ans;
unsigned long long F[30];
/*
pentru o combinare de k atacuri, exista k permutari pentru acestea, iar fiecare au acelasi
*/
double v[30];
bool valid(int x)
{
for(int i=1;i<x;i++)
if(sol[i]>sol[i+1]||sol[i]==sol[x])
return 0;
return 1;
}
bool solutie(int x)
{
return x==k;
}
void generare(int x)
{
for(int i=1;i<=n;i++)
{
sol[x]=v[i];
if(valid(x))
{
if(solutie(x))
{
double S=1;
for(int j=1;j<=x;j++)
{
S *= sol[j];
}
ans +=( S / F[n] * F[k]);
}
else
generare(x+1);
}
}
}
int main()
{
f>>n>>k;
for(int i=1;i<=n;i++)
f>>v[i];
F[0]=1;
F[1]=1;
for(int unsigned long long i=2;i<=25;i++)
F[i] = F[i-1] * i;
generare(1);
g<<ans;
return 0;
}