Pagini recente » Cod sursa (job #646323) | Cod sursa (job #2701295) | Solutii preONI 2007, Runda 2 | Monitorul de evaluare | Cod sursa (job #2380479)
#include <bits/stdc++.h>
using namespace std;
typedef long long int lint;
lint solve(const vector <pair <int, int> > &v) {
const int N = v.size();
vector <pair <int, int> > v2;
for (int i = 0; i < N; ++i) {
v2.emplace_back(v[i].first, v[i].second);
}
sort(v2.begin(), v2.end());
lint sum = 0;
for (int j = 0; j < N; ++j) {
if (v2[j].second != j) {
sum += 20;
}
sum += abs(v[v2[j].second].second - v[j].second);
}
return sum;
}
int main() {
ifstream cin("barman.in");
ofstream cout("barman.out");
int N;
cin >> N;
vector <pair <int, int> > v(N);
for (int i = 0; i < N; ++i) {
cin >> v[i].first;
v[i].second = 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;
}