Cod sursa(job #1368328)

Utilizator bajiBajan Vlad baji Data 2 martie 2015 16:18:10
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
#include<algorithm>
using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
int i,  st[28],n,p,nr=0;
double v[28],sum;

bool valid(int k)
{ int f[27];
  for(int i=1;i<k;i++)
  if(st[i]==st[k])
  return false;

  for(i=1;i<=k;i++)
  f[i]=st[i];

  sort(f+1,f+k);

  for(i=1;i<=k;i++)
   if(f[i]<st[i])
    return false;

  return true;
}

void scrie()
{ double prod=1.00;
  for(int i=1;i<=p;i++)
  prod*=v[st[i]];
  sum+=2*prod;
  nr+=2;
}

void back(int k)
{
  for(int i=1;i<=n;i++)
    {
      st[k]=i;
       if(valid(k))

       if(k==n)
        scrie();
        else
        back(k+1);
    }
}

int main()
{
   fin>>n;
   fin>>p;
   for(i=1;i<=n;i++)
    fin>>v[i];

   back(1);
   fout<<sum/nr;
    return 0;
}