#include <bits/stdc++.h>
using namespace std;
template <class T>
using V = vector<T>;
template <class T>
using VV = V<V<T>>;
constexpr long long TEN(int n) { return (n == 0) ? 1 : 10 * TEN(n - 1); }
template <class T, class U>
void chmin(T& t, const U& u) {
  if (t > u) t = u;
}
template <class T, class U>
void chmax(T& t, const U& u) {
  if (t < u) t = u;
}
template <class T, class U>
ostream& operator<<(ostream& os, const pair<T, U>& p) {
  os << "(" << p.first << "," << p.second << ")";
  return os;
}
template <class T>
ostream& operator<<(ostream& os, const vector<T>& v) {
  os << "{";
  for (int i = 0; i < (v.size()); i++) {
    if (i) os << ",";
    os << v[i];
  }
  os << "}";
  return os;
}
const int MN = 200010;
template <class T>
class BIT {
  T bit[MN];
  int n;

 public:
  BIT() {
    n = MN;
    memset(bit, 0, sizeof(bit));
  }
  T sum(int i) {
    ++i;
    T s = 0;
    while (i > 0) {
      s += bit[i];
      i -= i & -i;
    }
    return s;
  }
  void add(int i, T x) {
    ++i;
    while (i < n) {
      bit[i] += x;
      i += i & -i;
    }
  }
};
BIT<int> T, R;
int main() {
  int n;
  cin >> n;
  V<int> p(n);
  for (int i = 0; i < (n); i++) {
    cin >> p[i];
    --p[i];
  }
  V<pair<int, int>> vec(n);
  for (int i = 0; i < (n); i++) vec[i] = make_pair(p[i], i);
  sort((vec).begin(), (vec).end());
  V<long long> ans(n);
  long long rr = 0;
  set<int> sl, sr;
  long long mv = 0;
  for (int i = 0; i < (n); i++) R.add(i, 1);
  for (int i = 0; i < (n); i++) {
    int p = vec[i].second;
    int num = i - T.sum(p);
    rr += num;
    ans[i] = rr;
    int k = min(num, i - num);
    mv -= k;
    R.add(p, -1);
    if (i > 0) {
      if (sl.size() == sr.size()) {
        int ml = *sl.rbegin(), mr = *sr.begin();
        if (p < ml) {
          mv += R.sum(ml) - R.sum(p);
        } else if (p > mr) {
          mv += R.sum(p) - R.sum(mr);
        }
      } else {
        int m;
        if (sl.size() > sr.size()) {
          m = *sl.rbegin();
        } else {
          m = *sr.begin();
        }
        if (p < m) {
          mv += R.sum(m) - R.sum(p);
        } else {
          mv += R.sum(p) - R.sum(m);
        }
      }
    }
    if (sr.size() && *sr.begin() < p) {
      sr.insert(p);
    } else {
      sl.insert(p);
    }
    if (sl.size() > sr.size() + 1) {
      int x = *sl.rbegin();
      sl.erase(x);
      sr.insert(x);
    } else if (sl.size() + 1 < sr.size()) {
      int x = *sr.begin();
      sr.erase(x);
      sl.insert(x);
    }
    ans[i] += mv;
    T.add(p, 1);
  }
  for (int i = 0; i < (n); i++)
    printf("%lld%c", ans[i], i == n - 1 ? '\n' : ' ');
  return 0;
}
