Bài 5. Tìm kiếm (HSG 9 Hải Phòng 2025-2026)

Xem PDF




Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1600 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho mảng \(A\)\(n\) số nguyên dương \(\{a_1, a_2, \ldots, a_n\}\).

Yêu cầu: Với mỗi số nguyên dương \(a_i\), tìm số nguyên dương \(a_j\) \((j > i)\) với \(j\) nhỏ nhất thỏa mãn \(a_j\) có nhiều ước hơn \(a_i\); nếu không có số \(a_j\) thỏa mãn thì kết quả tìm kiếm là \(-1\).

Input

  • Dòng đầu tiên là số nguyên dương \(n\) \((n \le 2 \cdot 10^5)\).
  • Dòng thứ hai có \(n\) số nguyên dương \(a_1, a_2, \ldots, a_n\) \((a_i \le 10^9)\).
  • Dữ liệu đảm bảo: \(\max\{a_i\} - \min\{a_i\} \le 10^6\) với \(i = 1..n\).
  • Các số trên cùng một dòng trong file dữ liệu được viết cách nhau bởi dấu cách trống.

Output

  • Ghi ra một dòng có \(n\) số nguyên theo thứ tự là kết quả tìm kiếm theo yêu cầu. Các số nguyên ghi cách nhau bởi một dấu cách trống.

Example

Test 1

Input
6
6 18 7 10 9 8
Output
18 -1 10 -1 8 -1
Note

Số ước tương ứng của các số là: \(4\ 6\ 2\ 4\ 3\ 4\).

Suy ra kết quả tìm kiếm là:

  • \(a_1 = 18\) (vì \(6 > 4\))
  • \(a_2 = -1\) (vì không có số lớn hơn \(6\))
  • \(a_3 = 10\) (vì \(4 > 2\)\(a_4\) gần nhất)
  • \(a_4 = -1\) (vì không có số lớn hơn \(4\))
  • \(a_5 = 8\) (vì \(4 > 3\))
  • \(a_6 = -1\) (vì không có số bên phải)

Scoring

  • Subtask \(1\) (\(20\%\) số điểm): Dữ liệu vào có \(n \le 10^3\)\(a_i \le 10^4\) với \(i = 1..n\).
  • Subtask \(2\) (\(50\%\) số điểm): Dữ liệu vào có \(n > 10^3\)\(a_i \le 10^6\) với \(i = 1..n\).
  • Subtask \(3\) (\(30\%\) số điểm): Không có ràng buộc nào thêm.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.