Cod sursa(job #902052)

Utilizator dica69Alexandru Lincan dica69 Data 1 martie 2013 12:38:55
Problema Dezastru Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.53 kb
#include <cstdio>

using namespace std;
int i,n,d,x[30],use[30];
double a[30],s,sol;
long long p;
void back(int k)
{int i;
for (i=1;i<=n;i++)
if (!use[i])
{x[k]=i;use[i]=1;
s*=a[i];
if (k==d) sol+=s/p;
else back(k+1);
s/=a[i];use[i]=0;
}
}

int main()
{FILE *f1 = fopen("dezastru.in","r");
FILE *f2 = fopen("dezastru.out","w");
fscanf(f1,"%d%d",&n,&d);
for (i=1;i<=n;i++) fscanf(f1,"%lf",&a[i]);
p=n-d+1;
for (i=n-d+2;i<=n;i++) p=p*i;s=1;
back(1);
fprintf(f2,"%.6lf",sol);
fclose(f1);fclose(f2);
    return 0;
}