trang chủ / bài tập / medsmooth

Làm trơn trung vị

Đề bài

Mô tả

Cho dãy nhị phân a1,a2,,an (mỗi phần tử bằng 0 hoặc 1). Phép làm trơn trung vị biến dãy a thành dãy mới b như sau:

  • b1=a1bn=an (phần tử đầu và cuối giữ nguyên).
  • Với i=2,,n1: bi bằng trung vị của ba giá trị ai1,ai,ai+1 (giá trị đứng giữa khi sắp xếp ba số theo thứ tự không giảm).

Một dãy gọi là ổn định nếu áp dụng phép làm trơn trung vị lên nó thì dãy không thay đổi.

Hãy xác định xem nếu áp dụng phép làm trơn trung vị lặp đi lặp lại lên dãy a thì dãy có trở nên ổn định hay không. Nếu có, hãy in ra số lần áp dụng ít nhất để dãy trở nên ổn định và dãy ổn định thu được. Nếu dãy không bao giờ ổn định, in ra 1.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n: độ dài dãy.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an (ai{0,1}).

Dữ liệu ra

  • Nếu dãy không bao giờ ổn định, in ra một số duy nhất 1.
  • Ngược lại, dòng đầu in số lần áp dụng ít nhất để dãy trở nên ổn định; dòng thứ hai in n số của dãy ổn định thu được, cách nhau một dấu cách.

Ràng buộc

  • 3n500000
  • ai{0,1}

Ví dụ

Input Output Giải thích
4
0 0 1 1
0
0 0 1 1
Dãy đã ổn định ngay từ đầu, không cần áp dụng lần nào.
5
0 1 0 1 0
2
0 0 0 0 0
Sau lần thứ nhất dãy thành 0 0 1 0 0, sau lần thứ hai thành 0 0 0 0 0 và ổn định.
3
1 0 1
1
1 1 1
Trung vị của 1, 0, 1 là 1, nên sau một lần dãy thành 1 1 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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0