Pagini recente » Diferente pentru utilizator/matei_sofroni intre reviziile 8 si 11 | Cod sursa (job #701912) | Cod sursa (job #270076) | Cod sursa (job #465049) | Cod sursa (job #1243797)
#include <stdio.h>
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("dezastru.in");
ofstream g("dezastru.out");
int st[25],k,n,x,w; float suma,v[25];
bool valid(int p)
{
if(p>1 && st[p-1]>=st[p])return 0;
return 1;
}
int factorial(int n)
{
if(n==1) return 1;
else return n*factorial(n-1);
}
void rezolvare()
{
float sum=1;
for(int i=1;i<=k;i++)
{
sum*=v[st[i]];
}
sum*=w;
suma+=sum/x;
}
void back(int p)
{
if(p>k)rezolvare();
else
{
for(int i=1;i<=n;i++)
{
st[p]=i;
if(valid(p))
back(p+1);
}
}
}
int main()
{
f>>n>>k;
for(int i=1;i<=n;i++)
{
f>>v[i];
}
x=factorial(n); w=factorial(k);
back(1);
g<<suma;
return 0;
}