Cod sursa(job #538523)

Utilizator hiticas_abelhiticasabel hiticas_abel Data 21 februarie 2011 17:05:08
Problema Dezastru Scor 0
Compilator cpp Status done
Runda contest- Marime 1.11 kb
#include<iostream>
#include<fstream.h>
ifstream f("dezastru.in");
ofstream g("dezastru.out");
using namespace std;
int st[100],n,k;
double sanda=1,total_probabil=0;
double a[100];
int valid(int p)
{
    int i;
      for(i=1;i<p;i++)
        if(st[i]==st[p])return 0;
         return 1;
}    
void prod()
{
int i;

sanda=1;
for(i=1;i<=k;i++)
sanda=sanda*a[st[i]];

total_probabil=total_probabil+sanda;
/*
cout<<sanda<<" ";
system("pause");*/
}
//void afisare(){int i;for(i=1;i<=k;i++) g<<st[i]; g<<endl;}
void back(int p)
{int pval;
     
          for(pval=1;pval<=n;pval++)
          {st[p]=pval;
          
          if(valid(p))
          if(p==k)
       prod();
          else
          back(p+1);
          }
          }
        
        
          int main()
          {int i,j,fact=1;
              f>>n>>k;
              
          
         for(i=1;i<=n;i++)
         {f>>a[i];
          fact*=i;
          }
   


     
          back(1);
          g<<total_probabil/fact;
          f.close();
          g.close();
      
              return 0;
          }