// File advertisement.cpp created on 29.09.2025 at 09:22:03
#include <bits/stdc++.h>
using i64 = long long;
#ifdef DEBUG
#include "/home/ahmetalp/Desktop/Workplace/debug.h"
#else
#define debug(...) void(23)
#endif
constexpr int max_N = int(5E5) + 5;
constexpr int inf = int(2E9) + 5;
std::array<int, 3> A[max_N], B[max_N];
int rem[max_N];
int T[max_N << 2][2];
#define def int mid = (l + r) >> 1, lv = v + 1, rv = v + ((mid - l + 1) << 1)
void build(int v, int l, int r) {
if (l == r) {
T[v][0] = A[l][0] - A[l][1];
T[v][1] = A[l][0] + A[l][1];
return;
}
def;
build(lv, l, mid);
build(rv, mid + 1, r);
T[v][0] = std::max(T[lv][0], T[rv][0]);
T[v][1] = std::min(T[lv][1], T[rv][1]);
}
void rem1(int v, int l, int r, int p, int x) {
if (p < l || T[v][0] < x) {
return;
}
if (l == r) {
rem[l] = true;
T[v][0] = -inf;
T[v][1] = inf;
return;
}
def;
rem1(lv, l, mid, p, x);
rem1(rv, mid + 1, r, p, x);
T[v][0] = std::max(T[lv][0], T[rv][0]);
T[v][1] = std::min(T[lv][1], T[rv][1]);
}
void rem2(int v, int l, int r, int p, int x) {
if (p > r || T[v][1] > x) {
return;
}
if (l == r) {
rem[l] = true;
T[v][0] = -inf;
T[v][1] = inf;
return;
}
def;
rem2(lv, l, mid, p, x);
rem2(rv, mid + 1, r, p, x);
T[v][0] = std::max(T[lv][0], T[rv][0]);
T[v][1] = std::min(T[lv][1], T[rv][1]);
}
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int N;
std::cin >> N;
for (int i = 0; i < N; ++i) {
int X, E;
std::cin >> X >> E;
A[i] = {X, E};
}
std::sort(A, A + N);
for (int i = 0; i < N; ++i) {
A[i][2] = i;
}
build(0, 0, N - 1);
for (int i = 0; i < N; ++i) {
B[i] = A[i];
}
std::sort(B, B + N, [&](auto lhs, auto rhs) {
return lhs[1] > rhs[1];
});
int ans = 0;
for (int i = 0; i < N; ++i) {
int j = B[i][2];
if (rem[j]) {
continue;
}
ans++;
rem1(0, 0, N - 1, j, A[j][0] - A[j][1]);
rem2(0, 0, N - 1, j, A[j][0] + A[j][1]);
}
std::cout << ans << '\n';
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |