由于高传染性的牛传染病 COWVID-19 的爆发,Farmer John 非常担忧他的奶牛们的健康。

尽管他尽了最大努力使他的 社交距离 II(寒假每日一题 38)_#define 头奶牛们践行“社交距离”,还是有许多奶牛不幸染上了疾病。

编号为 社交距离 II(寒假每日一题 38)_#include_02 的奶牛们分别位于一条长直道路上的不同位置(相当于一维数轴),奶牛 社交距离 II(寒假每日一题 38)_c++_03 位于位置 社交距离 II(寒假每日一题 38)_#define_04

Farmer John 知道存在一个半径 社交距离 II(寒假每日一题 38)_i++_05,任何与一头被感染的奶牛距离不超过 社交距离 II(寒假每日一题 38)_i++_05 单位的奶牛也会被感染(然后会传染给与其距离 社交距离 II(寒假每日一题 38)_i++_05 单位内的奶牛,以此类推)。

不幸的是,Farmer John 并不确切知道 社交距离 II(寒假每日一题 38)_i++_05 的值。

他只知道他的哪些奶牛被感染了。

给定这个数据,求出起初感染疾病的奶牛的最小数量。

输入格式
输入的第一行包含 社交距离 II(寒假每日一题 38)_#define

以下 社交距离 II(寒假每日一题 38)_#define 行每行用两个整数 社交距离 II(寒假每日一题 38)_#define_11社交距离 II(寒假每日一题 38)_i++_12 描述一头奶牛,其中 社交距离 II(寒假每日一题 38)_#define_11 为位置,社交距离 II(寒假每日一题 38)_i++_12社交距离 II(寒假每日一题 38)_c++_15 表示健康的奶牛,社交距离 II(寒假每日一题 38)_i++_16 表示染病的奶牛,并且所有可能因传播而染病的奶牛均已染病。

输出格式
输出在疾病开始传播之前已经得病的奶牛的最小数量。

数据范围
社交距离 II(寒假每日一题 38)_#define_17

输入样例:

6
7 1
1 1
15 1
3 1
10 0
6 1

输出样例:

3

样例解释
在这个例子中,我们知道 社交距离 II(寒假每日一题 38)_#define_18,否则位于位置 社交距离 II(寒假每日一题 38)_c++_19 的奶牛会传染给位于位置 社交距离 II(寒假每日一题 38)_贪心_20 的奶牛。

所以,至少 社交距离 II(寒假每日一题 38)_#define_21 头奶牛初始时已被感染:位于位置 社交距离 II(寒假每日一题 38)_i++_16社交距离 II(寒假每日一题 38)_#define_21 的两头奶牛中的一头,位于位置 社交距离 II(寒假每日一题 38)_#include_24社交距离 II(寒假每日一题 38)_c++_19 的两头奶牛中的一头,以及位于位置 社交距离 II(寒假每日一题 38)_c++_26 的奶牛。


#include<iostream>
#include<algorithm>

#define x first
#define y second

using namespace std;

typedef pair<int, int> PII;

const int N = 1010, INF = 1e9;

PII q[N];

int main(){

int n;
scanf("%d", &n);

int a, b;
for(int i = 1; i <= n; i++){
scanf("%d%d", &a, &b);
q[i] = {a, b};
}

sort(q + 1, q + n + 1);

// 求 min(r)
int r = INF;
q[0] = {-INF, 0};
for(int i = 1; i <= n; i++)
if(q[i].y ^ q[i - 1].y) r = min(r, q[i].x - q[i - 1].x);

int res = 0;
for(int i = 1; i <= n; i++)
if(q[i].x - q[i - 1].x >= r && q[i].y) res++;

printf("%d\n", res);

return 0;
}