Bài toán dọn rác
Đề bài
Mô tả
Trên trục số nguyên có một tập hợp các đống rác, đống thứ nằm tại tọa độ . Tất cả các tọa độ đều đôi một khác nhau.
Một thao tác dồn toàn bộ được định nghĩa như sau: ta cần gom tất cả các đống về không quá hai tọa độ khác nhau. Để làm điều đó, ta thực hiện một số (có thể bằng ) bước. Mỗi bước, ta chọn một tọa độ và chuyển toàn bộ các đống đang ở tọa độ sang hoặc sang (không thể chỉ chuyển một phần).
Có truy vấn, mỗi truy vấn thuộc một trong hai loại:
0 x— xóa đống rác ở tọa độ (đảm bảo đang có đống tại ).1 x— thêm một đống rác mới ở tọa độ (đảm bảo chưa có đống tại ).
Tại mọi thời điểm tập hợp có thể rỗng. Lưu ý rằng thao tác dồn toàn bộ chỉ dùng để tính toán — nó không thực sự được thực hiện và không làm thay đổi tập hợp các đống.
Hãy in ra số bước ít nhất cần dùng để dồn toàn bộ trước khi xử lý truy vấn đầu tiên, và sau mỗi truy vấn được áp dụng theo thứ tự.
Dữ liệu vào
- Dòng đầu chứa hai số nguyên và ().
- Dòng thứ hai chứa số nguyên đôi một khác nhau ().
- dòng tiếp theo, mỗi dòng chứa hai số nguyên và (, ) mô tả truy vấn.
Dữ liệu ra
In ra số: số bước tối thiểu trước truy vấn đầu tiên và sau mỗi truy vấn.
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 5 6 1 2 6 8 10 1 4 1 9 0 6 0 10 1 100 1 50 |
5 7 7 5 4 8 49 |
Ban đầu tập là : chuyển (1 bước), (2 bước), (2 bước), tổng . Sau khi thêm , tập rời rạc thành hai cụm xa nhau nên cần . Sau khi thêm , một cụm trải dài từ đến nên phải dồn bước. |
| 5 8 5 1 2 4 3 0 1 0 2 0 3 0 4 0 5 1 1000000000 1 1 1 500000000 |
3 2 1 0 0 0 0 0 499999999 |
Tập ban đầu : cần bước (gom thành hai cụm). Sau mỗi lần xóa, tập co lại; khi còn ≤ 2 phần tử đáp án là . Cuối cùng tập là , gom cụm hai phần tử ở giữa và phải bước. |
Bình luận