Вы являетесь автором раунда Codeforces и подготовили n задач, которые вы собираетесь задать, причем задача i имеет сложность ai . Вы будете выполнять следующий процесс: удалить некоторые (возможно, ноль) задач из списка; переставить оставшиеся задачи в любом порядке, который вы пожелаете. Раунд считается сбалансированным, если и только если абсолютная разница между сложностью любых двух последовательных задач не превышает k (то есть меньше или равен k ). Какое минимальное количество задач нужно удалить, чтобы расстановка задач была сбалансированной? Входные данные Первая строка содержит одно целое число t (1≤t≤1000 ) — количество наборов входных данных. Первая строка каждого набора содержит два положительных целых числа n (1≤n≤2⋅105 ) и k (1≤k≤109 ) — количество задач и максимально допустимая абсолютная разница между последовательными задачами. Вторая строка каждого набора содержит n целых чисел, разделенных пробелами, ai (1≤ai≤109 ) — сложность каждой задачи. Обратите внимание, что сумма n по всем тестам не превышает 2⋅105 . Выходные данные Для каждого набора входных данных выведите одно целое число — минимальное количество задач, которые нужно удалить, чтобы расстановка задач была сбалансированной.
Примечание В первом примере мы можем удалить первые 2 задачи и составить набор, используя задачи со сложностями [4,5,6] , с разницей между соседними задачами равной |5−4|=1≤1 и |6−5|=1≤1 . Во втором примере мы можем взять одну задачу и составить раунд, используя задачу со сложностью 10 .
class Sequence {
public:
Sequence() : a(0) {}
explicit Sequence(const size_t n, const int a) noexcept : a(a) {
seq.resize;
}
size_t task() noexcept {
const auto n = seq.size();
if (n < 2) return 0;
sort(seq.begin(), seq.end());
size_t m = 0;
size_t k = 1;
for (size_t i = 1; i < n; ++i) {
if (seq - seq[i - 1] m) m = k;
return n - m;
}
private:
int a;
vector seq;
friend istream& operator>>(istream& inp, Sequence& s) {
for (auto& x : s.seq) inp >> x;
return inp;
}
};
class Task {
public:
explicit Task(const size_t n) noexcept {
box.resize;
}
private:
vector box;
vector result() noexcept {
const auto length = box.size();
vector res(length);
for (size_t i = 0; i < length; ++i) {
res = box.task();
}
return res;
}
friend istream& operator>>(istream& inp, Task& r) {
size_t n;
int a;
for (auto& x : r.box) {
inp >> n >> a;
Sequence seq{ n, a };
cin >> seq;
x = seq;
}
return inp;
}
friend ostream& operator task;
cout