Beyblade Burst II - Burst Order

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 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Sau chiến thắng ở vòng đầu tiên, Valt Aoi bước vào trận đấu tiếp theo.

\(n\) Beyblade được xếp thành một hàng. Beyblade thứ \(i\) có độ bền ban đầu là \(a_i\).

Trận đấu diễn ra theo các quy tắc sau:

  • Mỗi giây, tất cả Beyblade còn tồn tại đều giảm \(1\) độ bền.
  • Những Beyblade có độ bền bằng \(0\) sẽ Burst.
  • Mỗi khi một Beyblade Burst:
    • Hai Beyblade gần nhất còn tồn tại ở bên trái và bên phải của nó đều mất thêm \(1\) độ bền ngay lập tức.
    • Nếu một Beyblade có độ bền bằng \(0\) sau khi bị giảm, nó sẽ tiếp tục Burst ngay trong cùng thời điểm.
    • Hiệu ứng trên tiếp tục cho đến khi không còn Beyblade nào Burst trong thời điểm đó.

Hãy xác định thứ tự Burst của tất cả các Beyblade.

Input

  • Dòng đầu tiên chứa số nguyên \(n\).
  • Dòng thứ hai chứa \(n\) số nguyên \(a_1, a_2, \dots, a_n\).

Output

  • In ra \(n\) số nguyên là chỉ số của các Beyblade theo đúng thứ tự Burst.
  • Nếu có nhiều Beyblade Burst trong cùng một thời điểm, hãy in theo thứ tự từ trái sang phải.

Constraints

  • \(1 \le n \le 2 \cdot 10^5\)
  • \(1 \le a_i \le 10^9\)

Example

Test 1

Input
5
3 1 2 3 2
Output
2 3 5 1 4
Note
  • Giây thứ nhất, Beyblade số \(2\) Burst.
  • Beyblade số \(1\)\(3\) mất thêm \(1\) độ bền.
  • Beyblade số \(3\) tiếp tục Burst ngay trong giây đó.
  • Quá trình tiếp tục cho đến khi không còn Beyblade nào Burst.
  • Sau đó trận đấu chuyển sang giây tiếp theo.

Bình luận (1)

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