#include<bits/stdc++.h>
#define int long long
#define ld long double
#define pii pair<int, int>
#define vi vector<int>
#define vvi vector<vi>
#define pb push_back
#define fi first
#define se second
#define TII tuple<int, int, int>
#define MT make_tuple
#define mp make_pair
#define ts to_string
#define all(x) (x).begin(), (x).end()
#define sz(x) (int)(x).size()
#define MIN(x) *min_element(all(x))
#define MAX(x) *max_element(all(x))
#define lb lower_bound
#define ub upper_bound
#pragma GCC optimize("O3", "unroll-loops")
using namespace std;
const int INF = 1e15, ADD = 3e4 + 1, MX = 6e4 + 5, N = 3'005;
int dp[2][MX];
void cmin(int &a, int b) { a = min(a, b); }
void outin_1(priority_queue<int> pq, int add) {
cout << " -> ";
while(!pq.empty()) cout << pq.top() + add << ' ', pq.pop();
cout << endl;
}
void outin_2(priority_queue<int, vi, greater<int>> pq, int add) {
cout << " -> ";
while(!pq.empty()) cout << pq.top() + add << ' ', pq.pop();
cout << endl;
}
int32_t main() {
ios_base::sync_with_stdio(false); cin.tie(NULL);
int n; cin >> n;
priority_queue<int> lef;
priority_queue<int, vi, greater<int>> rig;
int ladd = 0, radd = 0, ans = 0;
int l_zero = 0, r_zero = 0;
for(int k = 0; k < 1; k++) lef.push(0), rig.push(0);
// real_val = in_val + lazy
// in_val = real_val - lazy
for(int i = 1; i <= n; i++) {
if(!lef.empty() && 0 < lef.top() + ladd) {
ans += lef.top() + ladd;
lef.push(-ladd); lef.push(-ladd);
int real_val = lef.top() + ladd;
if(real_val != l_zero) lef.pop();
rig.push(real_val - radd);
} else if(!rig.empty() && rig.top() + radd < 0) {
ans += -(rig.top() + radd);
rig.push(-radd); rig.push(-radd);
int real_val = rig.top() + radd;
if(real_val != r_zero) rig.pop();
lef.push(real_val - ladd);
} else lef.push(-ladd), rig.push(-radd);
int a, b; cin >> a >> b;
int k = abs(a - b);
if(a < b) ladd -= k, radd -= k, l_zero -= k, r_zero -= k;
else radd += k, r_zero += k;
// cout << "_______" << ans << endl;
// outin_1(lef, ladd);
// outin_2(rig, radd);
}
while(rig.top() + radd < 0) {
int real_val = rig.top() + radd;
int cnt = 0;
while(rig.top() + radd == real_val) cnt++, rig.pop();
int cur_val = min(rig.top() + radd, 0ll);
ans += (cur_val - real_val) * cnt;
}
cout << ans << '\n';
return 0;
}