#include <bits/stdc++.h>
using namespace std;
int N;
vector<pair<int, int> > v;
vector<int> query;
int ans;
struct SEG {
  SEG(int l, int r, int sum) : l(l), r(r), sum(sum) {}
  int l, r;
  int sum;
};
vector<SEG> seg;
void init(int idx, int s, int e) {
  if (s == e) return;
  seg[idx].l = seg.size();
  seg.push_back({-1, -1, 0});
  seg[idx].r = seg.size();
  seg.push_back({-1, -1, 0});
  init(seg[idx].l, s, (s + e) / 2);
  init(seg[idx].r, (s + e) / 2 + 1, e);
}
void update(int idx, int s, int e, int x, int y) {
  seg[idx].sum += y;
  if (s == e) return;
  if (x <= (s + e) / 2) {
    update(seg[idx].l, s, (s + e) / 2, x, y);
  } else {
    update(seg[idx].r, (s + e) / 2 + 1, e, x, y);
  }
}
int calc(int idx, int s, int e, int x, int y) {
  if (x <= s && e <= y) return seg[idx].sum;
  if (x > e || y < s) return 0;
  return calc(seg[idx].l, s, (s + e) / 2, x, y) +
         calc(seg[idx].r, (s + e) / 2 + 1, e, x, y);
}
int main() {
  seg.push_back({-1, -1, 0});
  scanf("%d", &N);
  init(0, 0, N - 1);
  for (int i = 0; i < N; i++) {
    int x;
    scanf("%d", &x);
    v.push_back({(x > 0) ? x : -x, i});
    update(0, 0, N - 1, i, 1);
  }
  sort(v.begin(), v.end());
  while (!v.empty()) {
    pair<int, int> now = v.back();
    v.pop_back();
    update(0, 0, N - 1, now.second, -1);
    query.push_back(now.second);
    while (!v.empty() && v.back().first == now.first) {
      query.push_back(v.back().second);
      update(0, 0, N - 1, v.back().second, -1);
      v.pop_back();
    }
    while (!query.empty()) {
      int x = query.back();
      query.pop_back();
      ans += min(calc(0, 0, N - 1, 0, x - 1), calc(0, 0, N - 1, x + 1, N - 1));
    }
  }
  printf("%d", ans);
  return 0;
}
