布展(show) 时间限制: 1 Sec 内存限制: 128 MB
题目描述
有N颗宝石, 安排在一个展示柜展览。 为了展出的视觉效果, 希望参与展示的宝石直径差距不要超过K个单位,也就是说直径差距超过K的宝石不能同时展出。 问最多可以选择多少颗宝石布展。
输入
第一行两个整数 N 和 K, 意义如题目所述。
之后 N 行, 每行一个数 D, 表示宝石的直径。
数据范围
N<=200,000
K<=1,000,000,000
D<=1,000,000,000
输出
一个正整数, 表示最多可以展示的数量。
样例输入 Copy
7 3
10
5
1
12
9
5
14
样例输出Copy
3
/*题目描述
有N颗宝石, 安排在一个展示柜展览。 为了展出的视觉效果, 希望参与展示的宝石直径差距不要超过K个单位,也就是说直径差距超过K的宝石不能同时展出。 问最多可以选择多少颗宝石布展。
输入
第一行两个整数 N 和 K, 意义如题目所述。
之后 N 行, 每行一个数 D, 表示宝石的直径。*/
#include<iostream>
using namespace std;
long const N = 100000000;
int a[N], tmp[N], n, k;
void Merge(int a[], int s, int m, int e, int tmp[])
{
// 将数组a a 的局部 a[s,m] 和 a[m+1,e] 合并到 tmp, 并保证 tmp 有序,然后再拷贝回 a[s,m]
// 归并操作时间复杂度: o(e e- - m+1), 即o( n)
int pb = 0;
int p1 = s,</