GROUP - Phân nhóm
Dữ liệu vào: standard input
Dữ liệu ra: standard output
Giới hạn thời gian: 1.0 giây
Giới hạn bộ nhớ: 512 megabyte
Đăng bởi: admin

Phân tích nhóm (phân nhóm, chia nhóm) là công việc phân chia các phần tử trong một tập hợp thành một hoặc nhiều nhóm mà trong đó, các phần tử trong cùng một nhóm sẽ giống nhau hơn so với phần tử thuộc nhóm khác.

Yêu cầu: Cho một tập N số nguyên dương và một số nguyên dương K, nhiệm vụ của bạn là đếm xem có bao nhiêu nhóm. Biết rằng 2 phần tử được xếp chung nhóm với nhau nếu như chênh lệch giữa chúng không vượt quá K.

Giải thích: Với tập N = 7 số nguyên dương: 2, 6, 1, 7, 3, 4, 9 và K = 1 thì ta sẽ có các mối quan hệ sau:

 - 2 và 1 chung một nhóm (chênh lệch giữa chúng là 1, không vượt quá K)
 - 2 và 3 chung một nhóm
 - 6 và 7 chung một nhóm
 - 3 và 4 chung một nhóm

Vậy ta sẽ có 3 nhóm: {1, 2, 3, 4}, {6, 7} và {9}

Dữ liệu vào: 

- Dòng đầu tiên chứa số nguyên T – là số bộ test cần kiểm tra (T ≤ 20).
- Các dòng tiếp theo chứa T bộ test, mỗi bộ test gồm 2 dòng:

+ Dòng đầu trong mỗi bộ test chứa 2 số nguyên dương N, K (1 ≤ N ≤ 105, 1 ≤ K ≤ 106) cách nhau ít nhất 1 dấu cách.
+ Dòng thứ hai trong mỗi bộ test chứa N số nguyên dương – là các phần tử của tập hợp (giá trị không vượt quá 106).

Kết quả:

Gồm T dòng, mỗi dòng chứa một số nguyên dương là số nhóm tương ứng của mỗi bộ test.

Ví dụ

Input

3

7 1
2 6 1 7 3 4 9

7 2
2 6 1 7 3 4 9

5 5
15 1 20 4 17

Output

3
1
2


Nguồn: Bài 3 HSG lớp 9 TPĐN '2015-2016

Back to Top