Cho hoán vị ~P~ = {~p_1~, ~p_2~,....~p_n~} của {1, 2,....,~n~}. Người ta muốn sắp xếp lại hoán vị này để thu được hoán vị {1, 2,....,~n~} bằng cách như sau: "Lần lượt xét các vị trí 1, 2,...,~n~. Với mỗi vị trí ~i~ liên tục đổi chỗ ~p_i~ cho số đằng trước nó chừng nào số này lớn hơn ~p_i~"
Ví dụ, với hoán vị {3,2,1,5,4} qui trình đổi chỗ thực hiện như sau:
- Với ~p_1~ = 3: (3,2,1,5,4) có 0 phép đổi chỗ
- Với ~p_2~ = 2 : (3,2,1,5,4) -> (2,3,4,5,4) có 1 phép đổi chỗ
- Với ~p_3~ = 1 : (2,3,1,5,4) -> (2,1,3,5,4) -> (1,2,3,5,4) có 2 phép đổi chỗ
- Với ~p_4~ = 5 : (1,2,3,5,4) có 0 phép đổi chỗ
- Với ~p_5~ = 4 : (1,2,3,5,4) -> (1,2,3,4,5) có 1 phép đổi chỗ
Cho biết số phép đổi chỗ của các vị trí 1, 2, ..., ~n~ . Hãy xác định hoán vị ban đầu
Dữ liệu vào: Dòng đầu tiên ghi số nguyên dương ~T~ <= 5 là số lượng tests. Tiếp theo là ~T~ nhóm dòng, mỗi nhóm mô tả một test có cấu trúc:
- Dòng 1: Ghi số nguyên dương ~n~ (1 <= ~n~ <= 200000)
- Dòng 2: Ghi các số nguyên ~w_1~, ~w_2~,...,~w_n~ với ~W_i~ là số lần đổi chỗ mà ~p_i~ thực hiện (~i~ =1,2,..., ~n~) .
Kết quả: In ra ~T~ dòng, dòng thứ ~i~ ghi ~n~ số nguyên mô tả hoán vị ~p_1~, ~p_2~,....~p_n~ ban đầu ứng với test thứ (~i~ =1,2,..., ~T~ . Thứ tự test là thứ tự xuất hiện trong input.
Ví dụ:
input:
2
3
0 1 0
5
0 1 2 0 1
output
2 1 3
3 2 1 5 4
- Có 30% số test có ~n~ <= 10 ứng với 30% số điểm;
- Có 10% số test có ~n~ <= 100 ứng với 10% số điểm;
- Có 10% số test có ~n~ <= 500 ứng với 10% số điểm;
- Có 20% số test có ~n~ <= 5000 ứng với 20% số điểm;
- Có 30% số test có ~n~ <= 2x~10^5~ ứng với 30% số điểm;
Comments