Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, Python, Ruby, Rust, Scratch, Swift
Cho hai dãy ~A~ và ~B~ gồm ~N~ phần tử. Bao gồm:
- Dãy ~A: A_1, A_2, A_3, . . . , A_N~ là một "hoán vị" của các số nguyên liên tiếp từ 1 đến ~N~. Phần tử thứ ~i~ của dãy được gọi là ~A_i~.
- Dãy ~B: B_1, B_2, . . . , B_N~ . Trong đó, ~B_i~ là số lượng phần tử "dãy con tăng dài nhất" bắt đầu từ phần tử thứ ~i~ của dãy ~A~ cho trước.
Yêu cầu: cho dãy ~B~, hãy tìm lại dãy ~A~. Nếu có nhiều dãy ~A~ thỏa mãn, tìm ra dãy ~A~ có thứ tự từđiển nhỏ nhất.
Input
- Dòng đầu tiên chứa số nguyên dương ~N~.
- Dòng tiếp theo chứa ~N~ số ~B_1, B_2, ..., B_N~.
Giới hạn:
- ~1 ≤ N ≤ 10^5~,
- ~1 ≤ B_i ≤ N~.
Output
- In ra N số ~A_1, A_2, ..., A_N~ là hoán vị các số từ 1 đến ~N~ thỏa mãn yêu cầu đề bài.
Sample
Input #1
4
1 2 2 1
Output #1
4 2 1 3
Input #2
5
5 4 3 2 1
Output #2
1 2 3 4 5
Hint
Với ví dụ thứ nhất:
- Dãy con tăng dài nhất bắt đầu từ phần tử thứ 4 là [3]. Do đó, ~B_4~ = 1.
- Dãy con tăng dài nhất bắt đầu từ phần tử thứ 3 là [1, 3]. Do đó, ~B_3~ = 2.
- Dãy con tăng dài nhất bắt đầu từ phần tử thứ 2 là [2, 3]. Do đó, ~B_2~ = 2.
- Dãy con tăng dài nhất bắt đầu từ phần tử thứ 1 là [1]. Do đó, ~B_1~ = 1.
Với ví dụ thứ hai:
- Dãy con tăng dài nhất bắt đầu từ phần tử thứ 5 là [5]. Do đó, ~B_5~ = 1.
- Dãy con tăng dài nhất bắt đầu từ phần tử thứ 4 là [4, 5]. Do đó, ~B_4~ = 2.
- Dãy con tăng dài nhất bắt đầu từ phần tử thứ 3 là [3, 4, 5]. Do đó, ~B_3~ = 3.
- Dãy con tăng dài nhất bắt đầu từ phần tử thứ 2 là [2, 3, 4, 5]. Do đó, ~B_2~ = 4.
- Dãy con tăng dài nhất bắt đầu từ phần tử thứ 1 là [1, 2, 3, 4, 5]. Do đó, ~B_1~ = 5.
Problem source: Kc97ble - Free Contest
Bình luận