Pagini recente » Monitorul de evaluare | Cod sursa (job #1534418) | Cod sursa (job #1301466) | Cod sursa (job #848439) | Cod sursa (job #2633336)
#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
typedef long long ll;
const ll mod=1e9+7;
const int dx[] = {0, 1, 0, -1};
const int dy[] = {1, 0, -1, 0};
#define all(x) x.begin(),x.end()
#define allr(x) x.rbegin(),x.rend()
#define rc(x) return cout<<x<<"\n",0
#define sz(s) (int) s.size()
#define pb push_back
#define mp make_pair
#define fr first
#define sc second
using namespace std;
ll t,s[28],c,n,k;
vector<double>prob;
vector<double>ans;
void scr() {
double a=1;
for (int i=1; i<=k; i++) {
a*=prob[s[i]-1];
}
ans.pb(a);
}
int perm(int b) {
if (b==n) {
c++;
scr();
}
else {
for (int r=b; r<=n; r++) {
swap(s[b],s[r]);
perm(b+1);
swap(s[b],s[r]);
}
}
}
int main() {
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
ifstream cin("dezastru.in");
ofstream cout("dezastru.out");
cin >> n >> k;
for (int i=0; i<n; i++) {
double x;
cin >> x;
prob.pb(x);
}
for (int i=1; i<=n; i++) {
s[i]=i;
}
perm(1);
double rasp=0;
for (int i=0; i<c; i++) {
rasp+=(ans[i]/c);
}
cout << rasp << '\n';
}