#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 10;
const int oo = 2e9;
const long long M = 1e9 + 7;
const pair<int, int> inf = make_pair(oo, oo);
int a[N], n;
vector<int> freq[1000001];
pair<int, int> seg[N * 4];
int vis[1000001];
pair<int, int> calc(pair<int, int> a, pair<int, int> b) {
  if (a.first < b.first) return a;
  if (a.first > b.first) return b;
  if (a.second < b.second) return a;
  return b;
}
void build(int n, int s, int e) {
  if (s == e) {
    seg[n] = {a[s], e};
    return;
  }
  build(n * 2 + 1, s, (s + e) / 2);
  build(n * 2 + 2, 1 + (s + e) / 2, e);
  seg[n] = calc(seg[n * 2 + 1], seg[n * 2 + 2]);
}
pair<int, int> get(int n, int s, int e, int l, int r) {
  if (e < l || s > r) return inf;
  if (s >= l && e <= r) {
    return seg[n];
  }
  return calc(get((n * 2) + 1, s, (s + e) / 2, l, r),
              get((n * 2) + 2, 1 + (s + e) / 2, e, l, r));
}
void update(int n, int s, int e, int idx, int val) {
  if (s > idx || e < idx) return;
  if (s == e && s == idx) {
    seg[n] = {val, s};
    return;
  }
  update(n * 2 + 1, s, (s + e) / 2, idx, val);
  update(n * 2 + 2, 1 + (s + e) / 2, e, idx, val);
  seg[n] = calc(seg[n * 2 + 1], seg[n * 2 + 2]);
}
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) {
    scanf("%d", a + i);
  }
  build(0, 0, n - 1);
  long long ans = 0;
  for (int i = 1; i < n; i++) {
    pair<int, int> k = get(0, 0, n - 1, 0, i - 1);
    if (k.first < a[i]) {
      vis[i] = 1;
      ans += a[i] - k.first;
      if (!vis[k.second])
        update(0, 0, n - 1, k.second, oo);
      else
        vis[k.second] = 0;
    }
  }
  cout << ans << endl;
}
