一个名叫Vasya的小学生喜欢读编程和数学方面的书。他最近阅读了一篇百科全书文章,描述了中值平滑(或中值滤波器)的方法及其在科学和工程中的许多应用。Vasya非常喜欢这种方法的想法,他决定在实践中尝试一下。
将中值平滑的最简单变体应用于数字序列a1,a2,…,将产生新的序列b1、b2、,…,bn,通过以下算法获得:
b1=a1,bn=an,即,新序列的第一个和最后一个编号与原始序列的对应编号匹配。
对于i=2,…,n-1值bi等于三个值ai-1、ai和ai+1的中值。
一组三个数字的中位数是排名第二的数字,当这三个数字以非递减顺序书写时。例如,集合5,1,2的中值是数字2,集合1,0,1的中值等于1。
为了使任务更容易,Vasya决定将该方法应用于仅由0和1组成的序列。
完成了一次程序后,Vasya查看了生成的序列并思考:如果我再次将算法应用于它,然后将其应用于下一个结果,如此类推Vasya尝试了几个例子,发现在应用了一些中值平滑算法之后,序列可以停止变化。我们说序列是稳定的,如果它在应用中值平滑时不发生变化。
现在Vasya想知道,这个序列是否最终会变得稳定。他让你写一个程序,在给定一系列0和1的情况下,它将决定它是否稳定。此外,如果它变得稳定,那么您应该确定它看起来是什么样子,以及需要对初始序列应用中值平滑算法多少次才能获得稳定的序列。
4 0 0 1 1
0 0 0 1 1
5 0 1 0 1 0
2 0 0 0 0 0
如果序列永远不会稳定,请打印一个数字-1。
否则,首先打印一个整数,即在初始序列稳定之前,对其应用中值平滑算法所需的最小次数。在第二行中,打印n个数字,用空格分隔,即生成的序列本身。
4 0 0 1 1
0 0 0 1 1
5 0 1 0 1 0
2 0 0 0 0 0
4
0 0 1 1
0
0 0 1 1