#include<iostream>
#include<vector>
#include<string>
#include<set>
#include<map>
#include<algorithm>
#include<queue>
#include<list>
#include<stack>
#include<cstdio>
#include<fstream>
#include<numeric>
#include<functional>
#include<utility>
#include<memory>
using namespace std;
using namespace placeholders;
int main(){
int n;
while (cin >> n){
vector<int> arr(n);
vector<int> index;
vector<int> result(n, 0);
for (int i = 0; i < n; i++){
cin >> arr[i];
if (arr[i] == 0) index.push_back(i);
}
for (int i = 0; i < index[0]; i++) result[i] = index[0] - i;
int length = index.size() - 1;
for (int j = n - 1; j > index[length]; j--) result[j] = j - index[length];
if (length >= 1){
int i = 0;
int j = 1;
while (j < index.size()){
int start = index[i];
int end = index[j];
// int mid = start + (end - start)/2;
int start2 = start + 1;
while (start2 < end){
result[start2] = min(start2 - start, end - start2);
start2++;
}
i = j;
j++;
}
}
for (int i = 0; i < result.size(); i++) cout << result[i] << " ";
cout << endl;
}
return 0;
}
803B Distances to Zero
最新推荐文章于 2018-01-22 19:06:00 发布