trang chủ / đề bài / sortcoins

Sắp xếp đồng xu

Đề bài

Mô tả

Có n đồng xu xếp thành một hàng, đánh số từ 1 đến n từ trái sang phải. Mỗi đồng xu thuộc một trong hai loại: O (đã ngừng lưu hành) hoặc X (còn lưu hành). Hàng được gọi là đã sắp xếp nếu mọi đồng O đứng trước mọi đồng X.

Để sắp xếp, người ta lặp lại một lượt như sau:

  1. Duyệt các đồng xu từ trái sang phải.
  2. Nếu đồng xu thứ i là X và đồng xu thứ i+1 là O thì đổi chỗ hai đồng xu này, rồi tiếp tục duyệt từ vị trí i+1 (tức là đồng X vừa được đẩy sang phải có thể tiếp tục bị đổi chỗ trong cùng lượt).

Quá trình dừng lại ngay sau lượt đầu tiên không có phép đổi chỗ nào. Độ khó của hàng là tổng số lượt đã thực hiện, tính cả lượt cuối cùng không đổi chỗ. Ví dụ, một hàng đã sắp xếp có độ khó bằng 1.

Ban đầu cả n đồng xu đều là O. Sau đó lần lượt n lần, đồng xu ở vị trí pi được thay bằng đồng X. Hãy tính độ khó của hàng ở trạng thái ban đầu và sau mỗi lần thay.

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên n.
  • Dòng thứ hai chứa n số nguyên phân biệt p1,p2,…,pn.

Dữ liệu ra

In ra n+1 số nguyên a0,a1,…,an trên một dòng, cách nhau bởi dấu cách, trong đó a0 là độ khó của hàng ban đầu và ai là độ khó sau lần thay thứ i.

Ràng buộc

  • 1≤n≤300000
  • 1≤pi≤n, các pi đôi một phân biệt

Ví dụ

Input Output Giải thích
4
1 3 4 2
1 2 3 2 1 Sau lần thay đầu, hàng là XOOO: lượt 1 đẩy X về cuối (OOOX), lượt 2 không đổi chỗ, nên độ khó là 2. Sau lần thay thứ hai, hàng là XOXO: XOXO → OXOX → OOXX rồi thêm một lượt kiểm tra, độ khó là 3. Sau lần thay thứ ba, XOXX → OXXX, độ khó là 2. Cuối cùng hàng toàn X, độ khó là 1.
8
6 8 3 4 7 2 1 5
1 2 2 3 4 3 4 5 1 Sau lần thay thứ hai, X ở vị trí 6 và 8; chỉ X ở vị trí 6 cần di chuyển nên độ khó là 2.

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