Khôi phục xâu
Đề bài
Mô tả
Ivan có một xâu gồm các chữ cái Latin thường, nhưng xâu này đã bị giấu mất. Ivan chỉ còn nhớ một số thông tin về .
Cụ thể, Ivan nhớ mẩu thông tin. Mẩu thứ cho biết một xâu xuất hiện trong tại đúng vị trí : nghĩa là với mỗi vị trí trong danh sách, ta có (chỉ số tính từ ).
Các mẩu thông tin đảm bảo không mâu thuẫn với nhau, nên luôn tồn tại ít nhất một xâu thoả mãn tất cả. Trong tất cả các xâu hợp lệ, hãy in ra xâu nhỏ nhất theo thứ tự từ điển. Độ dài của được xác định là vị trí lớn nhất bị một thông tin nào đó chạm tới; các vị trí không bị ràng buộc được điền bằng chữ cái nhỏ nhất có thể.
Dữ liệu vào
- Dòng đầu chứa số nguyên (số mẩu thông tin).
- dòng tiếp theo, dòng thứ chứa: xâu , rồi số nguyên dương (số lần xuất hiện), rồi số nguyên dương là các vị trí bắt đầu.
Dữ liệu ra
In ra xâu nhỏ nhất theo thứ tự từ điển thoả mãn mọi thông tin Ivan nhớ.
Ràng buộc
- , tổng tất cả không vượt quá
- Tổng độ dài các xâu không vượt quá
- Các trong cùng một mẩu thông tin là phân biệt và tăng dần.
- Dữ liệu đảm bảo tồn tại ít nhất một xâu hợp lệ.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 ab 1 1 aba 1 3 ab 2 3 5 |
ababab | "ab" tại vị trí 1, "aba" tại vị trí 3, "ab" tại vị trí 3 và 5. Ghép lại được "ababab". |
| 3 a 4 1 3 5 7 ab 2 1 5 ca 1 4 |
abacaba | "a" tại 1,3,5,7; "ab" tại 1,5; "ca" tại 4. Xâu ngắn nhất chứa đủ là "abacaba". |
| 1 a 1 3 |
aaa | "a" tại vị trí 3 buộc độ dài tối thiểu là 3; các vị trí 1, 2 chưa ràng buộc nên điền 'a'. |
Bình luận