Đếm cặp đoạn giao nhau

Xem dưới dạng PDF

Gửi bài giải


Điểm: 20
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
đầu vào: stdin
Đầu ra: stdout

Tác giả:
Kiểu bài tập

Trên mặt phẳng toạ độ có \(N\) đoạn thẳng, tất cả đều song song với trục tung (thẳng đứng) hoặc song song với trục hoành (nằm ngang). Tý muốn đếm số cặp đoạn thẳng giao nhau (kể cả giao tại đầu mút). Hãy giúp Tý viết chương trình đếm nhanh.

Định dạng đầu vào

  • Dòng đầu chứa số nguyên \(N\) (\(1 \le N \le 10^5\)).
  • \(N\) dòng tiếp theo, mỗi dòng chứa bốn số nguyên \(x_1, y_1, x_2, y_2\) (\(-10^6 \le x_i, y_i \le 10^6\)) mô tả một đoạn thẳng hoặc nằm ngang (\(y_1 = y_2, x_1 < x_2\)) hoặc thẳng đứng (\(x_1 = x_2, y_1 < y_2\)).

Định dạng đầu ra

  • In ra số cặp đoạn giao nhau.

Ví dụ

Input:

5
1 1 5 1
2 0 2 4
3 2 3 5
4 1 4 3
6 0 6 2

Output:

4

Ràng buộc

  • Subtask 1 (20%): \(N \le 10^2\).
  • Subtask 2 (30%): \(N \le 10^3\).
  • Subtask 3 (50%): \(N \le 10^5\).

Nhận xét

Không có ý kiến tại thời điểm này.