Cod sursa(job #1365365)

Utilizator Alex_dudeDudescu Alexandru Alex_dude Data 28 februarie 2015 11:36:05
Problema Dezastru Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <cstdio>
#include <algorithm>
#define nmax 26

double probabilitate,v[nmax],loc;
FILE *f1=fopen("dezastru.in","r"),*f2=fopen("dezastru.out","w");
int n,m,sol[nmax],nr;
void citire()
{
    int i;
    fscanf(f1,"%d %d",&n,&m);
    for(i=1;i<=n;i++)
    fscanf(f1,"%lf",&v[i]);
}
void genereaza()
{
    nr+=2;
    int i;double p=2;
    for(i=1;i<=m;i++)
    p*=v[sol[i]];
    probabilitate+=p;
}
void backt(int k)
{
    int i;
    if(k-1==m)genereaza();
    else
    for(i=sol[k-1]+1;i<=n-m+k;i++)
    {
        sol[k]=i;
        backt(k+1);
    }
}

int main()
{
    citire();
    backt(1);
    fprintf(f2,"%lf",probabilitate/nr);
  return 0;
}

//Our greatest weakness lies in giving up. The most certain way to succeed is always to try just one more time.