Sereja và các tiền tố
Đề bài
Mô tả
Sereja đang xây dựng một dãy số bằng thao tác. Ban đầu dãy rỗng. Tại thao tác thứ , có hai loại:
- Loại 1: Cho một số . Thêm vào cuối dãy.
- Loại 2: Cho hai số . Lấy phần tử đầu tiên của dãy hiện tại, ghép vào cuối dãy đúng lần liên tiếp.
Sau khi tất cả thao tác hoàn tất, ta thu được dãy cuối cùng. Cho vị trí (đánh số từ ). Với mỗi vị trí, hãy in ra giá trị của phần tử dãy tại vị trí đó.
Bảo đảm rằng tại mọi thao tác loại 2, độ dài của tiền tố không vượt quá độ dài hiện tại của dãy.
Dữ liệu vào
- Dòng đầu chứa số nguyên — số thao tác.
- dòng tiếp theo, mỗi dòng mô tả một thao tác:
- Bắt đầu bằng số và một số , hoặc
- Bắt đầu bằng số và hai số .
- Dòng tiếp theo chứa số nguyên — số vị trí cần truy vấn.
- Dòng cuối chứa số nguyên là các vị trí, cho theo thứ tự tăng nghiêm ngặt, mỗi vị trí không vượt quá độ dài cuối cùng của dãy.
Dữ liệu ra
In ra số trên một dòng, cách nhau bởi dấu cách: giá trị tại các vị trí được hỏi, theo đúng thứ tự xuất hiện trong dữ liệu vào.
Ràng buộc
- , không vượt quá độ dài dãy hiện tại trước thao tác.
- Các vị trí truy vấn nằm trong .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 6 1 1 1 2 2 2 1 1 3 2 5 2 1 4 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
1 2 1 2 3 1 2 1 2 3 1 2 1 2 3 4 | Dãy lần lượt: [1] → [1,2] → [1,2,1,2] → [1,2,1,2,3] → [1,2,1,2,3,1,2,1,2,3,1,2,1,2,3] → [1,2,1,2,3,1,2,1,2,3,1,2,1,2,3,4]. Truy vấn 16 vị trí đầu tiên. |
| 2 1 33085 1 44638 2 1 2 |
33085 44638 | Chỉ có hai thao tác loại 1, dãy là [33085, 44638]. |
Bình luận