#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
vector<pair<int, int>> v(n);
vector<int> dp(n);
for (int i = 0; i < n; i++) {
cin >> v[i].first >> v[i].second;
}
int ans = INT_MAX;
sort(v.begin(), v.end());
dp[0] = 0;
for (int j = 1; j < n; j++) {
int l = 0, r = j - 1;
int pos = -1;
while (l <= r) {
int mid = (l + r) / 2;
if (v[mid].first >= v[j].first - v[j].second) {
r = mid - 1;
} else {
l = mid + 1;
pos = mid;
}
}
if (pos != -1) {
dp[j] = dp[pos] + (j - pos - 1);
} else {
dp[j] = j;
}
}
for (int i = 0; i < n; i++) {
ans = min(ans, dp[i] + (n - i - 1));
}
cout << ans << '\n';
}
431B - Shower Line | 282C - XOR and OR |
1582B - Luntik and Subsequences | 609A - Флеш-карты |
1207A - There Are Two Types Of Burgers | 371C - Hamburgers |
343B - Alternating Current | 758B - Blown Garland |
1681B - Card Trick | 1592A - Gamer Hemose |
493D - Vasya and Chess | 1485A - Add and Divide |
337B - Routine Problem | 1392D - Omkar and Bed Wars |
76E - Points | 762C - Two strings |
802M - April Fools' Problem (easy) | 577B - Modulo Sum |
1555B - Two Tables | 1686A - Everything Everywhere All But One |
1469B - Red and Blue | 1257B - Magic Stick |
18C - Stripe | 1203B - Equal Rectangles |
1536A - Omkar and Bad Story | 1509A - Average Height |
1506C - Double-ended Strings | 340A - The Wall |
377A - Maze | 500A - New Year Transportation |