Cod sursa(job #3167847)

Utilizator IvanAndreiIvan Andrei IvanAndrei Data 11 noiembrie 2023 10:22:20
Problema Barman Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.5 kb
#include <bits/stdc++.h>

using namespace std;

const int max_size = 1203, INF = 2e9 + 1;

int v[max_size], og[max_size], sol[max_size];

signed main ()
{
#ifdef LOCAL
    freopen("test.in", "r", stdin);
    freopen("test.out", "w", stdout);
#else
    freopen("barman.in", "r", stdin);
    freopen("barman.out", "w", stdout);
#endif // LOCAL
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cin >> og[i];
        v[i] = og[i];
    }
    sort(v + 1, v + n + 1);
    for (int i = 1; i <= n; i++)
    {
        v[i + n] = v[i];
    }
    int ans = INF;
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
        {
            sol[j] = 0;
        }
        for (int j = 1; j <= n; j++)
        {
            if (og[j] == v[i + j - 1])
            {
                sol[j] = 1;
            }
        }
        int currans = 0;
        for (int j = 1; j <= n; j++)
        {
            if (og[j] != v[i + j - 1])
            {
                currans += 20;
                for (int k = 1; k <= n; k++)
                {
                    if (og[j] == v[i + k - 1] && sol[k] == 0)
                    {
                        sol[k] = 1;
                        currans += abs(k - j);
                        break;
                    }
                }
            }
        }
        ans = min(ans, currans);
    }
    cout << ans;
    return 0;
}