Cod sursa(job #1151157)

Utilizator ovidiuz98Zamfir Ovidiu ovidiuz98 Data 23 martie 2014 21:26:30
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
#include <iomanip>

using namespace std;
int n,k,i,j,poz,p[30];
float a[30],prod=1,minim,aux,sum=0;
int main()
{
    ifstream f("dezastru.in");
    ofstream g("dezastru.out");
    f>>n>>k;
    for(i=1;i<=n;i++)
        {f>>a[i];p[i]=i;
        if(i<=k) prod*=a[i];}
    sum+=(prod/6);
    do
    {
     poz=n;prod=1;
     while(p[poz]<p[poz-1] && poz>1) poz--;
     poz--;
     if(poz)
     {minim=p[poz+1];j=poz+1;
     for(i=poz+2;i<=n;i++)
            if(p[i]<minim && p[i]>p[poz]) minim=p[i],j=i;
     aux=p[poz];p[poz]=p[j];p[j]=aux;
     aux=a[poz];a[poz]=a[j];a[j]=aux;
     for(i=1;i<=(n-poz)/2;i++) aux=p[poz+i],p[poz+i]=p[n-i+1],p[n-i+1]=aux,aux=a[poz+i],a[poz+i]=a[n-i+1],a[n-i+1]=aux;
     for(i=1;i<=k;i++)
        prod*=a[i];
    sum+=(prod/6);}
    }while(poz);
    g<<setprecision(7)<<sum;
    return 0;
}