Bài 1. Từ điển nhiều nghĩa
MMTUDIEN.*Cho n cặp từ khóa - nghĩa. Một từ khóa có thể xuất hiện nhiều lần với nhiều nghĩa khác nhau. Với mỗi truy vấn, hãy in tất cả nghĩa của từ đó theo thứ tự xuất hiện trong dữ liệu vào.
Input
5 3
code ma_lenh
map anh_xa
code lap_trinh
key khoa
code chuong_trinh
code
map
stack
Output
ma_lenh lap_trinh chuong_trinh
anh_xa
NONE
Gợi ý: dùng multimap<string,string> và equal_range.
Bài 2. Liệt kê học sinh theo khoảng điểm
MMDIEM.*Cho danh sách học sinh và điểm. Có q truy vấn [L, R]. Với mỗi truy vấn, in tên các học sinh có điểm nằm trong đoạn [L, R], theo thứ tự điểm tăng dần.
Input
5 2
An 8
Binh 7
Chi 8
Dung 10
Hoa 6
7 8
9 10
Gợi ý: dùng multimap<int,string>, duyệt từ lower_bound(L) đến upper_bound(R).
Bài 3. Thêm, xóa, thống kê bản ghi
MMXOA.*Ban đầu có n bản ghi dạng key value. Sau đó có q thao tác: 1 k v thêm bản ghi, 2 k xóa tất cả bản ghi có key k, 3 k in số lượng và tổng value của key k.
Input
4 5
1 10
2 5
1 7
3 8
3 1
1 1 4
3 1
2 1
3 1
Gợi ý: dùng erase(key) để xóa toàn bộ nhóm cùng key.
Bài 4. Lịch sự kiện
MMLICHSU.*Có n sự kiện ban đầu, mỗi sự kiện có thời điểm t và tên. Có q thao tác: 1 L R in các sự kiện có thời điểm trong [L, R]; 2 t name thêm sự kiện mới.
Input
3 4
5 hoc
10 thi
10 nop
1 1 10
2 7 on
1 6 9
1 11 20
Output
hoc thi nop
on
NONE
Gợi ý: multimap cho phép nhiều sự kiện cùng thời điểm.
Bài 5. Tra cứu sản phẩm theo giá
MMSANPHAM.*Quản lý danh sách sản phẩm theo giá. Có q thao tác: 1 p in các mã sản phẩm có giá p; 2 L R in số sản phẩm có giá trong [L, R]; 3 p code thêm sản phẩm mới.
Input
4 5
10 A
20 B
10 C
30 D
1 10
2 10 20
3 10 E
1 10
2 25 40
Gợi ý: lấy nhóm giá đúng bằng equal_range(p), đếm khoảng bằng lower_bound và upper_bound.