Cod sursa(job #3173037)

Utilizator AndreiBOTOBotocan Andrei AndreiBOTO Data 21 noiembrie 2023 19:06:01
Problema Barman Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.36 kb
#include <bits/stdc++.h>

#pragma optimize GCC ("Ofast")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")

///#include <tryhardmode>
///#include <GODMODE::ON>

using namespace std;

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

const int NMAX=1205;
const int INF=2e9;

bool both[NMAX];
int v[NMAX];
int a[NMAX];

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int n,i,j,k,best=INF;
    fin>>n;
    for(i=1;i<=n;i++)
    {
        fin>>v[i];
        a[i]=v[i];
    }
    sort(v+1,v+n+1);
    for(i=1;i<n;i++)
        v[i+n]=v[i];
    for(i=1;i<=n;i++)
    {
        int kon=0;
        for(j=1;j<=n;j++)
        {
            if(v[i+j-1]==a[j])
                both[j]=true;
            else
                both[j]=false;
        }
        for(j=1;j<=n;j++)
        {
            if(v[i+j-1]!=a[j])
            {
                for(k=1;k<=n;k++)
                {
                    if(!both[k] && v[i+k-1]==a[j])
                    {
                        both[k]=true;
                        kon+=20;
                        kon+=abs(j-k);
                        break;
                    }
                }
            }
        }
        best=min(best,kon);
    }
    fout<<best<<"\n";
    fin.close();
    fout.close();
    return 0;
}