[Buổi 16][Sắp xếp & tìm kiếm][RDD] Bài 12: Sắp Xếp Đuôi Mảng


LÀM BÀI

Points: 20
Time limit: 2.0s
Memory limit: 64M

Author:
Problem types
Allowed languages
C++

Sắp Xếp Đuôi Mảng

Bối cảnh

Bạn được cho hai mảng AB với kích thước lần lượt là NM, với điều kiện 1 ≤ B_i ≤ N.

Yêu cầu

Đối với mỗi 1 ≤ i ≤ M, hãy thực hiện các bước sau:

Sắp xếp đoạn hậu tố có độ dài B_i trong mảng A theo thứ tự không giảm. Xuất mảng A sau tất cả các thao tác.

Lưu ý rằng đoạn hậu tố có độ dài X bao gồm các phần tử cuối cùng X của mảng.

Input

Dòng đầu tiên chứa một số nguyên T, đại diện cho số lượng test case. Dòng đầu tiên của mỗi test case chứa hai số nguyên cách nhau một khoảng trắng NM, đại diện cho kích thước của các mảng AB. Dòng thứ hai của mỗi test case chứa N số nguyên cách nhau một khoảng trắng, là các phần tử của mảng A. Dòng thứ ba của mỗi test case chứa M số nguyên cách nhau một khoảng trắng, là các phần tử của mảng B.

Output

Đối với mỗi test case, xuất ra một dòng chứa N số nguyên cách nhau một khoảng trắng, là mảng A sau tất cả các thao tác.

Ràng buộc

  • \(1 ≤ T ≤ 10^5\)
  • \(1 ≤ N, M ≤ 2 × 10^5\)
  • \(1 ≤ A_i ≤ 10^7\)
  • \(1 ≤ B_i ≤ N\)
  • Tổng \(N\) và \(M\) qua tất cả các test case không vượt quá \(2 × 10^5\).
Ví dụ 1

Input

2
5 1
2 3 4 6 1
2
6 3
5 7 12 11 13 10
1 2 4

Output

2 3 4 1 6
5 7 10 11 12 13

Giải thích ví dụ

  • Test case 1: Ban đầu, A = [2, 3, 4, 6, 1]. Sau khi sắp xếp đoạn hậu tố có độ dài 2, mảng trở thành A = [2, 3, 4, 1, 6].

  • Test case 2:

    • B_1 = 1: A = [5, 7, 12, 11, 13, 10]
    • B_2 = 2: A = [5, 7, 12, 11, 10, 13]
    • B_3 = 4: A = [5, 7, 10, 11, 12, 13]
    • Do đó, mảng cuối cùng là A = [5, 7, 10, 11, 12, 13].

Thông tin học tập

  • Buổi: B16
  • Concepts: sorting, suffix processing, maximum queries
  • Giới hạn kiến thức: B01-B16
  • Time limit: 2 seconds
  • Memory limit: 64 MB
  • Point: 20

Comments

There are no comments at the moment.

Zalo