Cod sursa(job #491615)

Utilizator nbibestNeagu Bogdan Ioan nbibest Data 11 octombrie 2010 21:11:14
Problema Dezastru Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <iostream>
#include<stdio.h>

int i,j,k,n,nn,p,kk,kkk;
float g;
float v[30];
int w[30];

using namespace std;

double back(int i){

    int p;
    float x;
    int kkk;
    //x=1;

    if ((kk==k))
        {

            int y;
            x=1;
            for (y=1;y<=k;y++)
            {
                x=x*v[w[y]];
                if ((w[y-1]==w[y])or(w[y]<w[y-1]))
                x=0;
                //printf("%d ",w[y]);
            }
            //printf("%f \n",x);
            if (x!=0)
            nn++;
            g=g+x;

        }
        else
        {

    if (i+k-1<=n){
        kk++;
    for (p=i;(p<=n);p++)
    {
        w[kk]=p;
        kkk=kk;

        //printf("%d %d %d %f %f \n",i,p,kk,g,x);
        //if (p+k-2<=n)
        back(p);

        kk=kkk;


    }
    }
        }

    return 0;
}

int main(void)
{

    freopen("dezastru.in","r",stdin);
    freopen("dezastru.out","w",stdout);

    scanf("%d%d\n",&n,&k);

    for (i=1;i<=n;i++)
    {
        scanf("%f",&v[i]);
        //printf("%f\n",v[i]);
    }

    g=0;
    back(1);

    float ss;
    ss=g/nn;

    //printf("%f %d\n",g,nn);
    printf("%.6f ",ss);

    return 0;
}