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:
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ố
25khô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