Codeforces 803 B. Distances to Zero 模拟

来源:互联网 发布:7号外设淘宝店网址 编辑:程序博客网 时间:2024/06/07 12:58

题意:在一串数中,找到每个数到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 longusing 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);elseprintf("%d",ans);}printf("\n");}