[DHBB25 - DX36 - 10] Bài 2: Đếm hình chữ nhật
Xem dạng PDFTrong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài
Có ~n~ đoạn thẳng được vẽ trên một mặt phẳng, đoạn thứ ~i~ nối hai điểm ~(x_{i,1}, y_{i,1})~ và ~(x_{i,2}, y_{i,2})~. Mỗi đoạn thẳng nằm ngang hoặc dọc và không suy biến thành một điểm. Cụ thể hơn, với mọi ~i \in [1, n]~: ~x_{i,1} = x_{i,2}~ hoặc ~y_{i,1} = y_{i,2}~, nhưng chỉ có đúng một trong các điều kiện này thỏa mãn. Chỉ các đoạn thuộc các loại khác nhau mới có thể cắt nhau: không có cặp đoạn thẳng ngang nào có điểm chung và không có cặp đoạn thẳng dọc nào có điểm chung.
Ta nói rằng bốn đoạn thẳng có chỉ số ~h_1, h_2, v_1~ và ~v_2~ sao cho ~h_1 < h_2~ và ~v_1 < v_2~ tạo thành một hình chữ nhật nếu thỏa mãn các điều kiện sau:
- Đoạn thẳng ~h_1~ và ~h_2~ nằm ngang;
- Đoạn thẳng ~v_1~ và ~v_2~ nằm dọc;
- Đoạn thẳng ~h_1~ cắt đoạn thẳng ~v_1~;
- Đoạn thẳng ~h_2~ cắt đoạn thẳng ~v_1~;
- Đoạn thẳng ~h_1~ cắt đoạn thẳng ~v_2~;
- Đoạn thẳng ~h_2~ cắt đoạn thẳng ~v_2~.
Yêu cầu: Hãy tính số cách chọn 4 đoạn thẳng để chúng tạo thành một hình chữ nhật. Lưu ý rằng các điều kiện ~h_1 < h_2~ và ~v_1 < v_2~ phải thỏa mãn.
Input
- Dòng đầu tiên chứa số nguyên ~n~ (~1 \le n \le 5000~).
- ~n~ dòng tiếp theo, mỗi dòng chứa 4 số nguyên ~x_{i,1}, y_{i,1}, x_{i,2}, y_{i,2}~ (~-5000 \le x_{i,1}, y_{i,1}, x_{i,2}, y_{i,2} \le 5000~).
Output
- In một số nguyên là số cách chọn 4 đoạn thẳng tạo thành hình chữ nhật.
Sample Input 1
7
-1 4 -1 -2
6 -1 -2 -1
-2 3 6 3
2 -2 2 4
4 -1 4 3
5 3 5 1
5 2 1 2
Sample Output 1
7
Sample Input 2
5
1 5 1 0
0 1 5 1
5 4 0 4
4 2 4 0
4 3 4 5
Sample Output 2
0
Bình luận