Các ước số tự nhiên có vai trò quan trọng trong nhiều thuật toán mã hóa, chẳng hạn như RSA, một thuật toán mã hóa công khai phổ biến. Việc tạo ra dãy các ước số của một tập hợp số tự nhiên có thể giúp hiểu được cách các ước số phân phối và ảnh hưởng đến tính bảo mật của mã hóa. Là một người yêu thích môn mật mã, Nam quan sát đặc điểm các ước số của một tập hợp số tự nhiên thông qua bài toán sau. Nam có một dãy số \(A\) gồm \(N\) phần tử, mỗi phần tử là một số tự nhiên khác 0. Gọi \(D\) là dãy các phần tử có giá trị không giảm gồm tất cả các ước số tự nhiên, không nhất thiết phải phân biệt của các phần tử của \(A\). Nam chuẩn bị dãy \(P\) gồm \(Q\) số tự nhiên khác 0, mỗi số biểu thị một vị trí trong dãy \(D\). Do dãy \(D\) chưa được cho trước mà phải tính toán thông qua các giá trị trong dãy \(A\) và \(N\), Nam mong muốn xác định nhanh từng giá trị phần tử trong dãy \(D\) tương ứng với mỗi phần tử thuộc dãy \(P\). Ví dụ, với \(N = 4\), \(A = (10, 2, 5, 2)\) và \(P = (5, 1, 10)\), ta có dãy \(D = (1, 1, 1, 1, 2, 2, 2, 5, 5, 10)\) và các giá trị phần tử trong dãy \(D\) tương ứng với mỗi phần tử thuộc dãy \(P\) là \((2, 1, 10)\).
Yêu cầu: Hãy giúp Nam xác định từng phần tử trong dãy \(D\) tương ứng với với mỗi phần tử trong
dãy \(P\).
Input
- Dòng đầu tiên chứa hai số nguyên dương \(N\) và \(Q\) lần lượt là số lượng phần tử dãy \(A\) và số
lượng phần tử dãy \(P\) \((1 \le N \le 10^6; 1 \le Q \le 10^5)\). - Dòng thứ hai chứa \(N\) số nguyên dương \(A_1, A_2, \dots , A_N\) mô tả dãy \(A\) $(1 \le A_i \le 10^6).
- Dòng thứ ba chứa \(Q\) số nguyên dương \(P_1, P_2, \dots , P_Q\) mô tả dãy \(P\) \((1 \le P_i \le |D|\), với \(|D|\) là số lượng phần tử dãy \(D)\).
Các số trên cùng một dòng cách nhau bởi dấu cách.
Output
- In ra duy nhất một dòng gồm \(Q\) số nguyên, cách nhau bởi dấu cách, là các phần tử trong dãy \(D\) tương ứng với các phần tử trong dãy \(P\).
Scoring
- Subtask \(1\) (\(25\%\) số test): \(N0, Q \le 1000; A_i \le 1000\) với mọi \(1 \le i \le N; P_i \le 1000\) với mọi \(1 \le i \le Q\).
- Subtask \(2\) (\(25\%\) số test): \(A_i\) là số nguyên tố với mọi \(1 \le i \le N\).
- Subtask \(3\) (\(20\%\) số test): \(n \le 10000; P_i \le 2 \cdot 10^6\) với mọi \(1 \le i \le Q\).
- Subtask \(4\) (\(20\%\) số test): \(P_i \le 2 \cdot 10^6\) với mọi \(1 \le i \le Q\).
- Subtask \(5\) (\(10\%\) số test): Không có ràng buộc gì thêm.
Example
Test 1
Input
4 10
10 2 5 2
1 2 3 4 5 6 7 8 9 10
Output
1 1 1 1 2 2 2 5 5 10
Note
\(N = 4\)
\(Q = 10\)
\(A = (10, 2, 5, 2)\)
\(D = (1, 1, 1, 1, 2, 2, 2, 5, 5, 10)\)
Test 2
Input
4 5
10 2 5 2
5 1 10 9 8
Output
2 1 10 5 5
Note
\(N = 4\)
\(Q = 5\)
\(A = (10, 2, 5, 2)\)
\(D = (2, 1, 10, 5, 5)\)
Bình luận