Cod sursa(job #2998934)

Utilizator angonio.grAntonio Grigorascu angonio.gr Data 10 martie 2023 11:37:16
Problema Barman Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.62 kb
#include <iostream>
#include <fstream>
#include<math.h>
using namespace std;

ifstream in("barman.in");
ofstream out("barman.out");

int func(int pos);

int n;
int vec[100],vec2[100];
int main()
{
    in>>n;

    for(int i=1;i<=n;i++)
    {
        in>>vec[i];
        vec2[i]=vec[i];
    }
    bool k=1;
    while(k)
    {
        k=false;
        for(int i=1;i<n;i++)
        {
            if(vec[i]>vec[i+1])
            {
                int aux = vec[i];
                vec[i]=vec[i+1];
                vec[i+1]=aux;
                k=true;
            }
        }
    }
    for(int i=1;i<=n;i++)
    {
        //cout<<vec[i]<< " ";
    }
    //cout<<endl;
    int mn=func(0);
    //cout<<"f(0)="<<mn<<endl;
    for(int i=1;i<n;i++)
    {
        int f=func(i);
        //cout<<"f("<<i<<")="<<f<<endl;
        if(f<mn)
        {
            mn=f;
        }
    }
    out<<mn-2;
    return 0;
}

int func(int pos)
{
    int timp=0;
    for(int i=1;i<=n;i++)
    {
        if(vec2[i]!=vec[i+pos])
        {
            timp+=20;
            int j=1;
            while(true)
            {
                if(vec[j+pos]==vec2[i])
                {
                    break;
                }
                j++;
                if(j+pos>n)
                {
                    j=-pos;
                }
            }
            int h=j+pos;
            if(abs(h-i)<abs(n-h+i))
            {
                timp+=abs(j+pos-i);

            }
            else
            {
                timp+=abs(n-h+i);

            }
        }
    }
    return timp;
}