Ghép cặp lập trình
Xem dạng PDFCâu lạc bộ Lập trình của trường có ~n~ thành viên; thành viên thứ ~i~ đã luyện tập được ~a_i~ giờ. Trong buổi sinh hoạt sắp tới, câu lạc bộ tổ chức hoạt động lập trình cặp: hai thành viên ngồi chung một máy và cùng giải một bài.
Ban chủ nhiệm nhận thấy nếu tổng số giờ luyện tập của hai thành viên trong một cặp không vượt quá ~S~ thì cả hai đều còn ít kinh nghiệm, cặp đó cần có người hướng dẫn ngồi cùng. Một cặp như vậy được gọi là cặp cần kèm cặp.
Yêu cầu
Hãy đếm xem trong tất cả các cách chọn ra hai thành viên khác nhau, có bao nhiêu cặp cần kèm cặp; tức là đếm số cặp chỉ số ~(i, j)~ với ~1 \le i < j \le n~ sao cho
$$a_i + a_j \le S .$$
Dữ liệu vào
- Dòng thứ nhất chứa hai số nguyên dương ~n~ và ~S~;
- Dòng thứ hai chứa ~n~ số nguyên dương ~a_1, a_2, \ldots, a_n~.
Kết quả ra
Ghi ra một số nguyên duy nhất là số cặp cần kèm cặp.
Ràng buộc
~2 \le n \le 2 \cdot 10^5~; ~1 \le a_i \le 10^9~; ~1 \le S \le 2 \cdot 10^9~.
- Subtask 1 (30% số điểm – test 01–06): ~n \le 2000~;
- Subtask 2 (20% số điểm – test 07–10): ~a_i \le 1000~;
- Subtask 3 (50% số điểm – test 11–20): không có ràng buộc bổ sung.
Lưu ý: kết quả có thể lên tới khoảng ~2 \cdot 10^{10}~, vượt quá phạm vi kiểu số nguyên 32 bit.
Ví dụ
Dữ liệu vào mẫu 1
5 10
7 3 5 6 4
Kết quả ra mẫu 1
6
Giải thích
Sáu cặp cần kèm cặp là ~(1,2)~ với tổng ~7 + 3 = 10~; ~(2,3)~ với tổng ~8~; ~(2,4)~ với tổng ~9~; ~(2,5)~ với tổng ~7~; ~(3,5)~ với tổng ~9~ và ~(4,5)~ với tổng ~6 + 4 = 10~. Bốn cặp còn lại đều có tổng lớn hơn ~10~, chẳng hạn cặp ~(1,5)~ có tổng ~7 + 4 = 11~.
Bình luận