Tập hợp bội
Đề bài
Mô tả
Cho một tập hợp bội (multiset) gồm số nguyên. Bạn cần xử lý truy vấn thuộc hai loại:
- Thêm: thêm một số nguyên vào tập.
- Xoá theo thứ hạng: tìm phần tử đứng thứ khi sắp xếp tất cả phần tử của tập theo thứ tự không giảm, rồi xoá một phần tử đó khỏi tập.
Phần tử đứng thứ (thống kê thứ tự thứ ) là phần tử ở vị trí trong danh sách đã sắp xếp không giảm của toàn bộ phần tử. Ví dụ, nếu tập chứa và thì phần tử thứ trong danh sách là . Nếu phần tử cần xoá xuất hiện nhiều lần, chỉ xoá đi một lần xuất hiện.
Sau khi xử lý xong tất cả truy vấn, hãy in ra một số bất kỳ thuộc tập, hoặc cho biết tập rỗng.
Dữ liệu vào
- Dòng đầu chứa hai số nguyên và : số phần tử ban đầu và số truy vấn.
- Dòng thứ hai chứa số nguyên : các phần tử ban đầu của tập.
- Dòng thứ ba chứa số nguyên , mỗi số mô tả một truy vấn:
- nếu , truy vấn là "thêm vào tập";
- nếu , truy vấn là "xoá phần tử đứng thứ ". Với truy vấn này, đảm bảo không vượt quá số phần tử hiện có của tập.
Dữ liệu ra
Nếu tập rỗng sau khi xử lý mọi truy vấn, in ra .
Ngược lại, in ra một số nguyên bất kỳ thuộc tập kết quả.
Ràng buộc
- Mỗi hoặc thoả (thêm), hoặc với không vượt quá kích thước tập tại thời điểm đó (xoá).
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 5 4 1 2 3 4 5 -5 -1 -3 -1 |
3 | Lần lượt xoá các phần tử (theo thứ tự thời gian). Còn lại . |
| 6 2 1 1 1 2 3 4 5 6 |
1 | Thêm rồi thêm . Tập cuối là ; in ra bất kỳ phần tử nào cũng được, ví dụ hoặc . |
| 5 5 1 2 3 4 5 -1 -1 -1 -1 -1 |
0 | Mọi phần tử đều bị xoá, tập rỗng. |
Bình luận