Cod sursa(job #2915715)

Utilizator vlad2009Vlad Tutunaru vlad2009 Data 24 iulie 2022 18:57:23
Problema Barman Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <fstream>
#include <algorithm>
#include <string.h>

using namespace std;

const int MAX_N = 6 * 1e2;
int a[2 * MAX_N + 1], v[2 * MAX_N + 1];
bool ok[MAX_N + 1];
int n;

int main() {
    ifstream fin("barman.in");
    ofstream fout("barman.out");
    fin >> n;
    for (int i = 1; i <= n; i++) {
        fin >> a[i];
        v[i] = a[i];
    }
    sort(v + 1, v + n + 1);
    for (int i = 1; i <= n; i++) {
        v[n + i] = v[i];
    }
    int answer = (1 << 30);
    for (int i = 1; i <= n; i++) {
        memset(ok, 0, sizeof(ok));
        for (int j = 1; j <= n; j++) {
            if (a[j] == v[i + j - 1]) {
                ok[j] = true;
            }
        }
        int cost = 0;
        for (int j = 1; j <= n; j++) {
            if (a[j] != v[i + j - 1]) {
                for (int k = 1; k <= n; k++) {
                    if (ok[k] == false && a[j] == v[i + k - 1]) {
                        ok[k] = true;
                        cost += 20;
                        cost += abs(k - j);
                        break;
                    }
                }
            }
        }
        answer = min(answer, cost);
    }
    fout << answer;
    return 0;
}