Cod sursa(job #1511499)

Utilizator EpictetStamatin Cristian Epictet Data 26 octombrie 2015 20:22:25
Problema Barman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
#include <algorithm>

using namespace std;

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

int n, sol = 2000000000, V[610], P[610], F[610];

int main()
{
    fin >> n;
    for (int i = 1; i <= n; i++)
    {
        fin >> V[i];
        P[i] = V[i];
    }

    sort (P + 1, P + 1 + n);
    for (int k = 1; k <= n; k++)
    {
        P[0] = P[1];
        for (int i = 1; i < n; i++) P[i] = P[i + 1];
        P[n] = P[0];

        for (int i = 1; i <= n; i++)
        {
            if (V[i] == P[i]) F[i] = 1;
            else F[i] = 0;
        }

        int cost = 0;
        for (int i = 1, j; i <= n; i++)
        {
            if (P[i] == V[i]) continue;
            for (j = 1; F[j] || V[i] != P[j]; j++);
            F[j] = 1;

            cost += 20 + abs(i - j);
        }

        sol = min (sol, cost);
    }

    fout << sol << '\n';
    return 0;
}