AcWing 4423. 最近距离(java---直接枚举就行,不用什么复杂的方法)
原题链接
中等
作者:
CYHMMZDAN
,
2023-03-19 00:49:02
,
所有人可见
,
阅读 35
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int l=0,r=1;
int[] b=new int[n+1];
int[] a=new int[n+1];
for (int i = 1; i <=n; i++) {
l=sc.nextInt();
if(l==0) {
b[r]=i;
a[i]=0;
r++;
}
}
int m=b[1]-1;
for(int i=1;i<b[1];i++) {
a[i]=m;
m--;
}
int k=1;
for (int i = b[r-1]+1; i <=n; i++) {
a[i]=k;
k++;
}
int t=1,x=0;
for(int i=2;i<r;i++) {
t=1;
for(int j=b[i-1]+1;j<b[i];j++) {
if((b[i-1]+b[i])%2==1){
if(j<=(b[i-1]+b[i])/2) {
a[j]=t;
t++;
}
else {
a[j]=t-1;
t--;
}
}
else{
if(j<=(b[i-1]+b[i])/2) {
a[j]=t;
t++;
}
else {
a[j]=t-2;
t--;
}
}
}
}
for(int i=1;i<=n;i++) {
System.out.print(a[i]+" ");
}
}
}