iteratornullHDU4302(map的用法)

时间紧张,先记一笔,后续优化与完善。

    标题:Holedox Eating

 

    每日一道理
心是一棵树,爱与希望的根须扎在土里,智慧与情感的枝叶招展在蓝天下。无论是岁月的风雨扑面而来,还是滚滚尘埃遮蔽了翠叶青枝,它总是静默地矗立在那里等待,并接受一切来临,既不倨傲,也不卑微。
  心是一棵树,一个个故事被年轮携载;一回回驿动与飞鸟相约;一次次碰撞使它绵密柔韧;一幕幕经历造就了它博广的胸怀。心是一棵树,独木不成林。因此,树与树既独立又相联,心与心既相异又相亲。
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <map>

using namespace std;
const int oo=1000000;

int main()
{
    map<int,int>mymap;
    int t,l,n,co,a,b,ca=0;
    map<int,int>::iterator it1,it2;
    scanf("%d",&t);
    while(t--)
    {
        mymap.clear();
        mymap[oo]=1,mymap[-oo]=1;
        scanf("%d%d",&l,&n);
        co=0;
        int ans=0,dir;
        while(n--)
        {
            scanf("%d",&a);
            if(a)
            {
                it1=mymap.lower_bound(co);
                if(it1->first==co)
                {
                    it1->second--;
                    if(it1->second==0) mymap.erase(it1);
                }
                else
                {
                    it1--;
                    it2=mymap.upper_bound(co);
                    if(it1->first==-oo&&it2->first==oo) continue;
                    if(co-it1->first==it2->first-co)
                    {
                        if(dir==1)
                        {
                            it2->second--;
                            ans+=it2->first-co;
                            co=it2->first;
                            if(it2->second==0) mymap.erase(it2);
                        }
                        else
                        {
                            it1->second--;
                            ans+=co-it1->first;
                            co=it1->first;
                            if(it1->second==0) mymap.erase(it1);
                        }
                    }
                    else if(it2->first-co<co-it1->first)
                    {
                        dir=1;
                        ans+=it2->first-co;
                        co=it2->first;
                        it2->second--;
                        if(it2->second==0) mymap.erase(it2);
                    }
                    else
                    {
                        dir=0;
                        ans+=co-it1->first;
                        co=it1->first;
                        it1->second--;
                        if(it1->second==0) mymap.erase(it1);
                    }
                }
            }
            else
            {
                scanf("%d",&b);
                mymap[b]++;
            }
        }
        printf("Case %d: %d\n",++ca,ans);
    }
    return 0;
}

    
 

文章结束给大家分享下程序员的一些笑话语录: 手机终究会变成PC,所以ip会比wm更加畅销,但是有一天手机强大到一定程度了就会发现只有wm的支持才能完美享受。就好比树和草,草长得再高也是草,时间到了条件成熟了树就会窜天高了。www.ishuo.cn

--------------------------------- 原创文章 By
iterator和null
---------------------------------

posted @ 2013-05-30 20:38  xinyuyuanm  阅读(174)  评论(0编辑  收藏  举报