# Cày trâu bài 8 (tham lam) Tạo mảng ***d*** là mảng khoảng cách giữa các phần tử của mảng ***a*** sau khi sort Chọn mỗi phần tử ***d[i]*** làm phần tử gốc Đếm xem có bao nhiêu cặp phân biệt có khoảng khoảng cách nhỏ hơn gốc ***d[i]*** đã chọn Nếu số lượng cặp đếm được lớn hơn hoặc bằng ***k*** và ***d[i]*** nhỏ hơn hoặc bằng ***res*** thì lưu ***res = d[i]*** ``` c #include<iostream> #include<algorithm> using namespace std; #define ll long long ll n, k, a[300005], d[300005], x, dem, res = 1e18, i, j; bool ok[100005]; int main() { cin >> n >> k; for (i = 1; i <= n; ++i) cin >> a[i]; sort(a + 1, a + 1 + n); for (i = 1; i < n; ++i) d[i] = abs(a[i] - a[i + 1]); for (i = 1; i < n; ++i) { x = d[i]; dem = 1; ok[i] = ok[i + 1] = ok[i - 1] = 1; for (j = 1; j < n; ++j) if (!ok[j] && d[j] <= x) { ++dem; ok[j] = ok[j + 1] = ok[j - 1] = 1; } if (dem >= k) res = min(res, x); for (j = 1; j < n; ++j) ok[j] = 0; } cout << res; } ```