Bài dễ
Gửi bài giải
Điểm:
50
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
1G
Tác giả:
Kiểu bài tập
Ngôn ngữ cho phép
C++, Python
Xét dãy số nguyên a₁, a₂, …, aₙ.
Có q thao tác thuộc một trong hai loại thao tác sau:
Thao tác loại 1 có dạng: 1 x với 1 ≤ x ≤ n, tức là tìm vị trí i lớn nhất thỏa mãn i < x và aᵢ = aₓ. Nói cách khác, cần tìm vị trí xuất hiện trước đó gần nhất của giá trị aₓ. Nếu không tồn tại vị trí như vậy, in ra -1.
Thao tác loại 2 có dạng: 2 x với 1 ≤ x ≤ n, tức là in ra tất cả các vị trí i thỏa mãn aᵢ = x. Các vị trí phải được in theo thứ tự giảm dần. Nếu giá trị x không xuất hiện trong dãy, in ra -1.
Yêu cầu: Thực hiện lần lượt q thao tác và đưa ra kết quả tương ứng với từng thao tác.
INPUT
- Dòng đầu tiên chứa hai số nguyên dương n, q;
- Dòng thứ hai chứa n số nguyên a₁, a₂, …, aₙ (1 ≤ aᵢ ≤ n);
- Dòng thứ k (1 ≤ k ≤ q) trong q dòng tiếp theo chứa hai số nguyên k, x mô tả thao tác thứ k.
Trong đó:
- k = 1 hoặc k = 2;
- Nếu k = 1, 1 ≤ x ≤ n;
- Nếu k = 2, 1 ≤ x ≤ n.
OUTPUT
Với mỗi thao tác:
- Với thao tác loại 1 x, in ra vị trí xuất hiện trước đó gần nhất của aₓ, hoặc -1 nếu không tồn tại;
- Với thao tác loại 2 x, in ra tất cả vị trí i sao cho aᵢ = x, theo thứ tự giảm dần. Nếu không có vị trí nào, in ra -1.
Ràng buộc
- 1 ≤ n, q ≤ 10⁵;
- 1 ≤ aᵢ ≤ n;
- Ngoài ra, dãy được đảm bảo:
\[aᵢ \ne aᵢ₋₁\quad (2 \le i \le n).\]
Các Subtask
Subtask 1 — 10%
- 1 ≤ n, q ≤ 100;
- Số lượng giá trị khác nhau trong dãy không quá 10.
Subtask 2 — 10%
- 100 ≤ n, q ≤ 1000;
- Số lượng giá trị khác nhau trong dãy không quá 50.
Subtask 3 — 20%
- 1000 ≤ n, q ≤ 5000;
- Số lượng giá trị khác nhau trong dãy không quá 300.
Subtask 4 — 30%
- 5000 ≤ n, q ≤ 30000;
- Số lượng giá trị khác nhau trong dãy không quá 700.
Subtask 5 — 30%
- n = 100000;
- q = 30000;
- Số lượng giá trị khác nhau trong dãy không quá 700.
Ví dụ
Sample Input
8 6
2 5 3 2 5 2 7 5
1 4
1 5
1 8
2 5
2 2
2 4
Sample Output
1
2
5
8 5 2
6 4 1
-1
Giải thích
Dãy:
i: 1 2 3 4 5 6 7 8
aᵢ: 2 5 3 2 5 2 7 5
- 1 4: a₄ = 2, vị trí trước đó có giá trị 2 là 1, nên kết quả là 1.
- 1 5: a₅ = 5, vị trí trước đó có giá trị 5 là 2, nên kết quả là 2.
- 1 8: a₈ = 5, vị trí trước đó gần nhất có giá trị 5 là 5, nên kết quả là 5.
- 2 5: giá trị 5 xuất hiện tại các vị trí 2, 5, 8, in theo thứ tự giảm dần: 8 5 2.
- 2 2: giá trị 2 xuất hiện tại các vị trí 1, 4, 6, in theo thứ tự giảm dần: 6 4 1.
- 2 4: không có phần tử nào bằng 4, nên in -1.
Nhận xét