#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for (int (i)=(0);(i)<(long long)(n);++(i))
using ll = long long;
using P = pair<int, int>;
using namespace std;


// https://beta.atcoder.jp/contests/chokudai_s001/submissions/3772915
// 1-index
template <typename T>
class BIT {
private:
    vector<T> v;
    const int n;
public:
    BIT(int _n) :v(_n+1, 0), n(_n) {}

    void clear() { fill(v.begin(), v.end(), 0); }

    T sum(int i) {
        T s = 0;
        while (i > 0) {
            s += v[i];
            i -= i&(-i);
        }
        return s;
    }

    T sum(int i, int j) {
        T ret_i = sum(i-1);
        T ret_j = sum(j);
        return ret_j - ret_i;
    }

    void add(int i, T x) {
        while (i <= n) {
            v[i] += x;
            i += i&(-i);
        }
    }
};

int main() {
    int n;
    cin >> n;
    BIT<ll> b1(n), b2(n);
    vector<ll> a1(n), a2(n);
    map<ll, int> mp, mp2;
    rep(i, n) {
        cin >> a1[i];
        mp[a1[i]] = 0;
    }

    // ranking
    int newnum = 1;
    for (auto & x : mp) x.second = newnum++;
    rep(i, n) {
        a1[i] = mp[a1[i]];
        a2[i] = a1[i];
        mp2[a1[i]]++;
    }
    reverse(a2.begin(), a2.end());

    vector<pair<int, pair<int, ll>>> s1(n);
    vector<ll> s2(n);
    rep(i, n) {
        s1[i] = { a1[i], {n-i-1, i - b1.sum(a1[i]) }};
        s2[i] = i - b2.sum(a2[i]);
        b1.add(a1[i], 1);
        b2.add(a2[i], 1);
    }

    // 5 4 3 2 1

    sort(s1.begin(), s1.end(), [](const pair<int, pair<int, ll>> & a, const pair<int, pair<int, ll>>& b) {
        if (a.first == b.first) {
            return a.second.first < b.second.first;
        }
        return a.first < b.first;
    });

    ll ans = 0;
    rep(i, n) {
        pair<int, pair<int, ll>> a = s1[i];
        ans += min(a.second.second, s2[a.second.first]);
        //cout << ans << endl;
    }
    cout << ans << endl;
    //
    // ll ans = 0;
    // for (auto & cur : mp2) {
    //     while (cur.second > 0) {
    //         rep(i, n) {
    //             if (used[i]) continue;
    //             if (a1[i] == cur.first) {
    //                 ans += min(s1[i], s2[n-i-1]);
    //                 used[i] = 1;
    //                 cur.second--;
    //                 break;
    //             }
    //         }
    //     }
    // }
    // cout << ans << endl;

    // cout << endl;
    // rep(i, n) {
    //     cout << s1[i] << " ";
    // }
    // cout << endl;
    // rep(i, n) {
    //     cout << s2[n-i-1] << " ";
    // }
    // cout << endl;

    // bitset<101010> used;
    // reverse(a2.begin(), a2.end());
    // vector<int> rev_ans(n, 0);
    // for (auto& cur : mp2) {
    //     fill(rev_ans.begin(), rev_ans.end(), 0);
    //     b1.clear(); b2.clear();
    //     while (cur.second > 0) {
    //         rep(i, n) {
    //             b1.add()
    //         }
    //
    //
    //         cur.second--;
    //     }
    // }

    //
    // // 反転数
    // // b.sum(a[j]) == (i < j and a_i <= a_j)
    // // j - (a_i <= a_j) == (i < j and a_i > a_j)
    // rep(j, n) {
    //     rev_ans[j] += j - b2.sum(a2[j]) + (j >= 1 ? rev_ans[j-1] : 0);
    //     b2.add(a2[j], 1);
    //     cerr << rev_ans[j] << " ";
    // }
    // cerr << endl;
    //
    // ll tmp = 0;
    //
    // // 全部降順
    // ll ans = rev_ans[n-1];
    // // rep(i, n) cout << rev_ans[i] << " ";
    // // cout << endl;
    //
    // rep(j, n-1) {
    //     tmp += j - b1.sum(a1[j]);
    //     b1.add(a1[j], 1);
    //     ll tmpans = tmp + rev_ans[n-j-2];
    //     cerr << tmp << ", " << rev_ans[n-j-2] << endl;
    //     ans = min(ans, tmpans);
    // }
    // tmp += (n-1) - b1.sum(a1[n-1]);
    //
    // // 全部昇順
    // ans = min(ans, tmp);
    //
    // cout << ans << endl;
    // return 0;
}

