点击打开链接
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
int a[200005];
int b[200005];
int c[200005];
int main()
{
int n,i,j,s,m=0;
int k=0;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
if(a[i]==0)
{
b[k]=i;
k++;
}
}
for(i=0;i<n;i++)
{
if(i<=b[m])
c[i]=b[m]-i;
else
{
if(i>b[m]&&i<=b[m+1])
c[i]=min(i-b[m],b[m+1]-i);
if(i==b[m+1]&&(m+1)<=k-1)
{
c[i]=0;
m++;
}
if(i>b[k-1])
c[i]=c[i-1]+1;
}
}
for(i=0;i<n;i++)
{
if(i<n-1)
printf("%d ",c[i]);
else
printf("%d\n",c[i]);
}
return 0;
}