#include <algorithm> #include <cstdio> #include <vector> using namespace std; const int N = 1e5 + 10; int n; int a[N], b[N]; int f[N]; vector<int> c; void ins(int x, int v) { while (x <= n) { f[x] += v; x += x & -x; } } int get(int x) { int v = 0; while (x > 0){ v += f[x]; x -= x & -x; } return v; } int get(int l, int r) { return get(r) - get(l - 1); } int main() { scanf("%d", &n); for (int i = 1; i <= n;i ++) scanf("%d", &a[i]), c.push_back(a[i]); sort(c.begin(), c.end()); for (int i = 1; i <= n;i ++) { a[i] = lower_bound(c.begin(),c.end(), a[i]) - c.begin() + 1; ins(i, 1); b[a[i]] = i; } long long ans = 0; for (int i = n; i >= 1; i --) { ins(b[i], -1); int x = get(1, b[i]), y = get(b[i], n); ans += min(x, y); } printf("%lld\n", ans); return 0; }