Mắt xích yếu nhất
Xem PDFĐoàn thanh niên tổ chức một cuộc chạy kêu gọi mọi người hưởng ứng phong trào “Vì một cuộc sống không có rác thải nhựa”. Có \(n\) người tham gia cuộc chạy, mỗi người mặc một áo phông có in số ở lưng, áo người thứ \(i\) có số là \(a_i, i = 1 \div n\).
Sau cuộc chạy mọi người tập trung ở quảng trường thành phố, tham gia trò chơi tập thể “Khâu yếu nhất”. Các bạn đứng thành một vòng tròn, cạnh người thứ \(2\) là người thứ nhất và thứ \(3\), cạnh người thứ \(3\) là người thứ \(2\) và thứ tư, ..., cạnh người thứ \(n\) là người thứ \(n-1\) và người thứ nhất.
Trò chơi bao gồm nhiều lượt đi. Ở mỗi lượt, những ai có số áo nhỏ hơn số áo hai người cạnh mình bước ra khỏi hàng, những người còn lại đứng dồn khít thành vòng tròn nhỏ hơn. Trò chơi kết thúc khi trong vòng tròn chỉ còn có \(2\) người hoặc khi không có ai phải bước ra ngoài.
Với mỗi người hãy xác định lượt đi mà họ phải bước ra ngoài. Những người còn lại trong vòng tròn khi trò chơi kết thúc có số của lượt đi ra là \(0\). Các lượt đi đánh số từ \(1\).
Input
- Dòng đầu tiên chứa số nguyên \(n\) (\(2 \le n \le 2 \cdot 10^5\)).
- Dòng thứ \(2\) chứa \(n\) số nguyên \(a_1, a_2, \dots, a_n\) (\(1 \le a_i \le 10^9, i = 1 \div n\)).
Output
- Đưa ra trên một dòng \(n\) số nguyên, số thứ \(i\) xác định lượt đi ra của người thứ \(i, i = 1 \div n\).
Example
Test 1
Input
5
5 1 3 1 5
Output
0 1 2 1 0
Note
- Lượt 1: Người thứ \(2\) (số áo \(1\)) nhỏ hơn hai người cạnh mình (\(5\) và \(3\)), người thứ \(4\) (số áo \(1\)) nhỏ hơn hai người cạnh mình (\(3\) và \(5\)). Cả hai cùng bước ra. Vòng tròn còn lại: \(5, 3, 5\).
- Lượt 2: Người thứ \(3\) (số áo \(3\)) nhỏ hơn hai người cạnh mình (\(5\) và \(5\)) nên bước ra. Vòng tròn còn lại: \(5, 5\).
- Trò chơi kết thúc vì chỉ còn \(2\) người.
- Kết quả: Người \(1\) và \(5\) còn lại (\(0\)), người \(2\) và \(4\) ra ở lượt \(1\), người \(3\) ra ở lượt \(2\).
Bình luận (22)