CodeForce-803B Distances to Zero(贪心DP)

Distances to Zero

CodeForces - 803B

题意:给定一个数列 a0, a1, ..., an - 1。对于数列中的每一项都要求出与该项最近的0与该项的距离。保证数列中有至少一个0。

#include <cstdio>
#include <algorithm>
#define maxn 200005
#define inf 0x3f3f3f3f
using namespace std;
int a[maxn], f[maxn], g[maxn], N;
int main()
{
    int i;
    scanf("%d",&N);
    for(i=1;i<=N;i++)scanf("%d",a+i);
    f[0]=inf, g[N+1]=inf;
    for(i=1;i<=N;i++)
    {
        if(a[i]==0)f[i]=0;
        else f[i]=f[i-1]+1;
    }
    for(i=N;i;i--)
    {
        if(a[i]==0)g[i]=0;
        else g[i]=g[i+1]+1;
    }
    for(i=1;i<=N;i++)printf("%d ",min(f[i],g[i]));
    return 0;
}

 

posted @ 2017-07-02 10:39  饼饼饼饼饼  阅读(169)  评论(0编辑  收藏  举报