Cod sursa(job #1908907)

Utilizator obi10Rob Aro obi10 Data 7 martie 2017 10:54:20
Problema Dezastru Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream f("dezastru.in");
ofstream g("dezastru.out");

int x[30];
float y[30];

int nudesc(int n)
{
    int i;
    for(i=1;i<n;i++)
        if(x[i]<x[i+1])
        return 1;
    return 0;
}
void ogl(int q, int n)
{
    int i,j=1;
    for(i=q;i<=(n+q)/2;i++)
    {
        swap(x[i],x[n-j+1]);
        swap(y[i],y[n-j+1]);
        j++;
    }
}
int main()
{
    int n,k,i,q,r,t,j,nr=0;
    float rez=0,p=1;
    f>>n>>k;
    for(i=1;i<=n;i++)
    {
        x[i]=i;
        f>>y[i];
    }
    for(j=1;j<=k;j++)
        p=p*y[j];
    rez=rez+p;
    nr++;
    while(nudesc(n))
    {
        i=n;
        while(x[i]<x[i-1])
        {
            i--;
        }
        q=i;
        r=i-1;
        t=i-1;
        while(x[r]<x[i])
            i++;
            i--;
        swap(x[r],x[i]);
        swap(y[t],y[i]);
        ogl(q,n);
        p=1;
        for(j=1;j<=k;j++)
            p=p*y[j];
        rez=rez+p;
        nr++;
    }
    g<<rez/nr;
    return 0;
}