题意:在一串数中,找到每个数到0的最近距离,输入保证至少含有一个0。
题目链接:http://codeforces.com/contest/803/problem/B
#include<cstdio>
#include<queue>
#include<iostream>
#include<vector>
#include<map>
#include<cstring>
#include<string>
#include<set>
#include<stack>
#include<algorithm>
#define cle(a) memset(a,0,sizeof(a))
#define inf(a) memset(a,ox3f,sizeof(a))
#define ll long long
using namespace std;
const int maxn = 2e5+10;
const int INF = ( 2e9 ) + 2;
int a[maxn];
vector<int> v;
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
if(a[i]==0)v.push_back(i);
}
int k=0;
for(int i=0;i<n;i++)
{
int ans=INF;
if(k!=v.size())
ans=abs(i-v[k]);
if(k>0&&ans>0)
ans=min(ans,abs(v[k-1]-i));
if(ans==0)k++;
if(i)
printf(" %d",ans);
else
printf("%d",ans);
}
printf("\n");
}