Cod sursa(job #1992155)

Utilizator andreiutu111Noroc Andrei Mihail andreiutu111 Data 19 iunie 2017 18:07:34
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<fstream>
#include<iomanip>
using namespace std;
ifstream f("dezastru.in");
ofstream g("dezastru.out");
int N,K,st[26];
double v[26],s,p;
int long long P;
bool valid(int k){
    for(int i=1;i<k;++i)
        if(st[i]==st[k])
            return false;
}
bool sol(int k){
    return k==N;
}
void back(int k){
    for(int x=1;x<=N;++x){
        st[k]=x;
        if(valid(k)){
            if(sol(k)){
                p=1;
                for(int i=1;i<=K;++i)
                    p*=v[st[i]];
                s+=p/P;
            }else back(k+1);
        }
    }
}
int main()
{
    f>>N>>K;
    for(int i=1;i<=N;++i)
        f>>v[i];
    P=1;
    for(int i=2;i<=N;++i)P*=i;
    back(1);
    g<<s<<setprecision(6);
    return 0;
}