Cod sursa(job #2652773)

Utilizator DenisONIcBanu Denis Andrei DenisONIc Data 25 septembrie 2020 17:49:46
Problema Barman Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <bits/stdc++.h>
#define NMAX 606
using namespace std;

int n, v[NMAX], v2[NMAX], solved[NMAX];

int solve(){
    int j, ans = 0;
    for (int i=1;i<=n;i++) solved[i] = (v[i] == v2[i]);
    for (int i=1;i<=n;i++){
        if (v[i] != v2[i]){
            for (j=1;solved[j] || v[i] != v2[j];j++);
            ans += min(abs(i-j), min(i,j) + n - max(i,j)) + 20;
            solved[j] = 1;
        }
    }
    return ans;
}

int main()
{
    freopen("barman.in","r",stdin);
    freopen("barman.out","w",stdout);

    cin >> n;
    for (int i=1;i<=n;i++) cin >> v[i], v2[i] = v[i];
    sort(v2+1,v2+n+1);

    int ans = 1e9;
    for (int i=0;i<n;i++){
        ans = min(ans, solve());
        rotate(v2+1,v2+2,v2+n+1);
    }

    cout << ans << '\n';

    return 0;
}