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

Không có ý kiến tại thời điểm này.