trang chủ / bài tập / segments

Đoạn thẳng

Đề bài

Mô tả

Trên một trục số ban đầu được tô màu trắng. Người ta lần lượt thêm vào n đoạn thẳng màu đen.

Sau mỗi lần thêm một đoạn, hãy xác định số thành phần liên thông của các đoạn đen — tức là số đoạn thẳng rời nhau trong hợp của tất cả các đoạn đen đã thêm cho tới thời điểm đó.

Lưu ý: nếu một đoạn kết thúc tại điểm x và một đoạn khác bắt đầu tại điểm x, thì hai đoạn này được coi là thuộc cùng một thành phần liên thông (hai đoạn chạm nhau tại một điểm cũng được tính là liên thông).

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên n — số đoạn thẳng.
  • Trong n dòng tiếp theo, dòng thứ i chứa hai số nguyên liri — tọa độ đầu trái và đầu phải của đoạn thứ i. Các đoạn được liệt kê theo đúng thứ tự chúng được thêm vào.

Dữ liệu ra

In ra n số nguyên — số thành phần liên thông của các đoạn đen sau mỗi lần thêm đoạn.

Ràng buộc

  • 1n200000
  • 1li<ri109

Ví dụ

Input Output Giải thích
3
1 3
4 5
2 4
1 2 1 Sau hai đoạn đầu có 2 thành phần vì [1,3][4,5] rời nhau. Đoạn thứ ba [2,4] cắt đoạn trái và chạm đoạn phải tại điểm 4, nên tất cả gộp thành 1 thành phần.
9
10 20
50 60
30 40
70 80
90 100
60 70
10 40
40 50
80 90
1 2 3 4 5 4 3 2 1 Năm đoạn đầu rời nhau hoàn toàn. Các đoạn sau lần lượt nối các thành phần lại với nhau cho tới khi còn 1 thành phần.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0