You are on page 1of 1

#include<stdio.

h>
#include<stdbool.h>
#define MAXN 500005

long long int arr[MAXN];


long long int temp[MAXN];

int findmed(long long int a,long long int b,long long int c)
{
if((a > b && a < c) || a==b || a == c)
return a;
else if((b > a && b < c) || b==c)
return b;
else
return c;
}

int main()
{
int n;
int assign = 0;
bool have = true;
scanf("%d",&n);
for(int i = 0;i < n;i++)
scanf("%lld",&arr[i]);
while(have)
{
have = false;
for(int i = 1;i < n - 1;i++)
{
temp[i] = findmed(arr[i-1],arr[i],arr[i+1]);
}
for(int i = 1;i < n-1;i++)
{
if(temp[i] != arr[i])
{
have = true;
arr[i] = temp[i];
}
}
if(have)
assign++;
}

printf("%d\n",assign);
for(int i = 0;i < n;i++)
printf("%lld ",arr[i]);
return 0;
}

You might also like