Pagini recente » Infoarena Monthly 2012 - concursul comunitatii, Editia I | Rating Kleinknecht Dorin (bazg) | Cod sursa (job #2237427) | Cod sursa (job #1776507) | Cod sursa (job #2380477)
#include <bits/stdc++.h>
using namespace std;
typedef long long int lint;
lint solve(const vector <int> &v) {
const int N = v.size();
vector <pair <int, int> > v2;
for (int i = 0; i < N; ++i) {
v2.emplace_back(v[i], i);
}
sort(v2.begin(), v2.end());
lint sum = 0;
for (int j = 0; j < N; ++j) {
if (v2[j].second != j) {
sum += 20;
}
int val = abs(v2[j].second - j);
if (N - val < val) {
val = N - val;
}
sum += val;
}
return sum;
}
int main() {
ifstream cin("barman.in");
ofstream cout("barman.out");
int N;
cin >> N;
vector <int> v(N);
for (int i = 0; i < N; ++i) {
cin >> v[i];
}
lint ans = numeric_limits <lint> :: max();
for (int i = 0; i < N; ++i) {
ans = min(ans, solve(v));
rotate(v.begin(), v.begin() + 1, v.end());
}
cout << ans << endl;
return 0;
}