Phần tử lớn hơn tiếp theo

Xem dạng PDF

Gửi bài giải

Điểm: 500,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Nguồn bài:
HungTV
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Cho một mảng ~A~ gồm ~N~ số nguyên. Với mỗi phần tử ~A[i]~ (~1 \le i \le N~), hãy tìm phần tử ~A[j]~ đầu tiên nằm bên phải (~j > i~) sao cho ~A[j] > A[i]~.

Nếu không tồn tại phần tử nào thỏa mãn, kết quả cho vị trí đó là -1.

Dữ liệu

  • Dòng đầu tiên chứa số nguyên dương ~N~ (~1 \le N \le 10^5~).
  • Dòng thứ hai chứa ~N~ số nguyên ~A[1], A[2], ..., A[N]~ (~|A[i]| \le 10^9~). Các số được phân cách nhau bởi khoảng trắng.

Kết quả

In ra một dòng gồm ~N~ số nguyên, cách nhau bởi khoảng trắng. Số thứ ~i~ là phần tử lớn hơn tiếp theo của ~A[i]~ (hoặc -1 nếu không có).

Ví dụ

Input 1
4
4 5 2 25
Output 1
5 25 25 -1
Giải thích 1
  • Bên phải số 4, số lớn hơn đầu tiên là 5.
  • Bên phải số 5, số lớn hơn đầu tiên là 25.
  • Bên phải số 2, số lớn hơn đầu tiên là 25.
  • Bên phải số 25 không còn phần tử nào lớn hơn nó, kết quả là -1.
Input 2
5
9 8 7 6 5
Output 2
-1 -1 -1 -1 -1

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.