Xây dựng mảng

Xem PDF

Điểm: 300 Thời gian: 0.5s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho một dãy số nguyên \(A\) gồm \(n\) phần tử. Ta định nghĩa mảng \(B\) gồm \(n\) phần tử, với \(B[i]\) được tính như sau:

  • Bằng \(A[j]\) là phần tử gần nhất bên trái \(A[i]\) và nhỏ hơn hoặc bằng \(A[i]\) (với \(1\le j<i, j\) lớn nhất có thể, \(A[j] \le A[i]\)).
  • Bằng \(0\) khi không tồn tại \(A[j]\) như trên.

Ví dụ: Với \(A = {2,5,3,6}\) thì \(B = {0,2,2,3}\)


  1. \(A[1]\) là số đầu tiên trong dãy \(⇒ B[1] = 0\)

  2. Số gần nhất bên trái nhỏ hơn hoặc bằng \(5\)\(2\) \(⇒ B[2] = 2\)

  3. Số gần nhất bên trái nhỏ hơn hoặc bằng \(3\)\(2\) \(⇒ B[3] = 2\)

  4. Số gần nhất bên trái nhỏ hơn hoặc bằng \(6\)\(3\) \(⇒ B[4] = 3\)

Yêu cầu: Cho mảng \(A\), hãy tìm và in ra mảng \(B\) thõa mãn điều kiện trên.

Input

  • Dòng đầu tiên là số nguyên \(n\).
  • Dòng thứ hai gồm \(n\) số nguyên là các phần tử của mảng \(A\).

Output

  • Gồm \(n\) số nguyên là các phần tử của mảng \(B\).

Constraints

  • \(1\leq n\leq 10^5\)
  • \(1\leq A[i]\leq 10^9\)

Scoring

  • Subtasks \(1\) (\(33,33\%\) số điểm): \(n \le 10^4\)
  • Subtasks \(2\) (\(66,67\%\) số điểm): Không có ràng buộc gì thêm

Example

Test 1

Input
4
2 5 3 6 
Output
0 2 2 3

Bình luận


  • 1
    PhamtUan123    2:39 p.m. 30 Tháng 6, 2022 đã chỉnh sửa

    bài này làm như nào để ăn được 2 test cuối vậy ạ?(đã ac)


    • 4
      VoBaThongL921    9:16 p.m. 8 Tháng 10, 2021

      dùng scanf và printf thì wrong answer còn dùng cin cout thì ac:) lạ ta

      1 phản hồi