HDOJ 最少拦截系统

最好还是用堆来维护吧,幸亏没超时。

# include <stdio.h>

int top, s[30005];

int main()
{    
    int n, h, i ,find, cur, mini;
    while (~scanf("%d", &n))
    {
        top = 0;
        for (i = 1; i <= n; ++i)
        {
            scanf("%d", &h);
            find = 0;
            for (int i = 0; i < top; ++i)
            {
                if (s[i] > h)
                {
                    if (!find)
                        find = 1, cur = s[i], mini = i;
                    else if (cur > s[i])
                    {
                        cur = s[i];
                        mini = i;
                    }                                            
                }
            }
            if (!find)
                s[top++] = h;
            else
                s[mini] = h;            
        }
        printf("%d\n", top);
    }
    
    return 0;
}

posted on 2012-08-08 14:47  getgoing  阅读(168)  评论(0编辑  收藏  举报

导航