Bộ số tam giác
Point: 100.0
Time limit: 1.0s
Memory limit: 640 M
Input:
stdin
Output:
stdout
Author:
Problem type
Phương pháp: Tìm kiếm nhị phân cơ bản
Cho dãy số \(A\) gồm \(n\) phần tử nguyên dương \(a_1, a_2, ..., a_n\). Mỗi phần tử có giá trị không vượt quá \(10^9\) và \(1 < n ≤ 5000\). Một bộ ba số được gọi là bộ số tam giác, nếu ba số này tạo thành ba cạnh của một tam giác nào đó. Nghĩa là \(a, b, c\) là một bộ số tam giác khi và chỉ khi \(a + b > c\) và \(a + c > b\) và \(b + c > a\).
Yêu cầu
- Hãy đếm xem trong dãy \(A\) có bao nhiêu bộ số tam giác \((a_i, a_j, a_k)\) với \(i, j, k\) đôi một khác nhau.
Dữ liệu
- Dòng đầu là số \(n\);
- Dòng tiếp theo là các phần tử của dãy \(A\), mỗi phần tử cách nhau một dấu cách.
Kết quả
- In ra số lượng bộ tam giác từ trong dãy \(A\).
Ví dụ
INPUT | OUTPUT | GIẢI THÍCH |
---|---|---|
5 4 3 1 5 7 |
3 | Ba bộ số tam giác gồm: \((4, 3, 5), (4, 5, 7), (3, 5,7)\). |
Ràng buộc:
- Có 30% số test ứng với 30% số điểm của bài có \(n ≤ 100\).
- Có 30% số test ứng với 30% số điểm của bài có \(100<n ≤ 1000\).
- Có 40% số test ứng với 40% số điểm của bài có \(1000<n ≤ 5000\).