trang chủ / đề bài / restoreperm

Khôi phục hoán vị từ dãy tổng

Đề bài

Mô tả

Một dãy số nguyên p1,p2,…,pn được gọi là hoán vị nếu nó chứa mỗi số từ 1 đến n đúng một lần. Ví dụ [3,1,2], [1], [4,3,1,2] là các hoán vị, còn [2], [1,1], [2,3,4] thì không.

Có một hoán vị độ dài n bị giấu đi. Với mỗi vị trí i, bạn được cho giá trị si bằng tổng của tất cả các pj sao cho j<i và pj<pi. Nói cách khác, si là tổng các phần tử đứng trước vị trí i và có giá trị nhỏ hơn pi.

Hãy khôi phục lại hoán vị p.

Dữ liệu vào

  • Dòng đầu tiên chứa một số nguyên n — độ dài của hoán vị.
  • Dòng thứ hai chứa n số nguyên s1,s2,…,sn.

Dữ liệu đảm bảo dãy s luôn tương ứng với một hoán vị hợp lệ độ dài n.

Dữ liệu ra

In ra n số nguyên p1,p2,…,pn — hoán vị cần khôi phục. Có thể chứng minh được đáp án luôn duy nhất.

Ràng buộc

  • 1≤n≤2·105
  • 0≤si≤n(n−1)2

Ví dụ

Input Output Giải thích
3
0 0 0
3 2 1 Với mọi i không có chỉ số j<i nào thỏa pj<pi, nên mọi si đều bằng 0. Dãy giảm dần là hoán vị duy nhất có tính chất này.
5
0 1 1 1 10
1 4 3 2 5 Với i=2,3,4 chỉ có j=1 thỏa mãn nên s2=s3=s4=p1=1. Với i=5 thì mọi j=1,2,3,4 đều thỏa mãn nên s5=1+4+3+2=10.
2
0 1
1 2 Với i=2 thì j=1 thỏa mãn vì p1=1<2=p2, do đó s2=p1=1.

Bình luận

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

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0