Cod sursa(job #2998958)

Utilizator angonio.grAntonio Grigorascu angonio.gr Data 10 martie 2023 11:58:30
Problema Barman Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.51 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;
    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;
            for(j=1;j<=n;j++)
            {
                if(vec[j]==vec2[i])
                {
                    break;
                }
            }
            int h=j-pos;
            if(abs(j-pos-i)<abs(n-j-pos+i))
            {
                timp+=abs(j-pos-i);
            }
            else
            {
                timp+=abs(n-j-pos+i);
            }
        }
    }
    return timp;
}