Cod sursa(job #2678072)

Utilizator Tudor_IIliescu Andrei-Tudor Tudor_I Data 28 noiembrie 2020 08:45:14
Problema Dezastru Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
ifstream f("dezastru.in");
ofstream g("dezastru.out");
int sol[20],n,k,nr;
float r, a[20];

void afis()
{   float x=1;
    nr++;
    for( int i=1 ; i<=k ; i++ )
    {   x*=a[sol[i]];
    }
    r+=x;
}

int valid(int poz)
{
    for(int i=1;i<poz;i++)
        if(sol[poz]<=sol[i])
            return 0;
    return 1;
}

void bkt(int poz)
{
    for(int i=1;i<=n;i++)
    {   sol[poz]=i;
        if(valid(poz))
        {   if(poz==k) afis();
            else bkt(poz+1);
        }
    }
}

int main()
{
    f>>n>>k;
    for(int i=1;i<=n;i++) f>>a[i];
    bkt(1);
    g<<r/nr;
    return 0;
}