POJ1281-MANAGER

http://poj.org/problem?id=1281

第一遍读题目可能有点不明白,就是要模拟几种操作,a加入,r删除(如果可能),p删除,e终止。

双端队列很吊的样子,虽然还不太会,先在这里记录一下吧。

#include<iostream> 
#include<cstdio>      
#include<cstring>
#include<algorithm>           
#include<deque>    
using namespace std;
int main(void)
{
    int i,iN,iMax,iNum,iPolicy;
    char chRequest;
    deque<int> qDate,qRemove,qDel;
    while(scanf("%d",&iMax)==1)
    {
        qDate.clear();
        qRemove.clear();
        qDel.clear();
        iPolicy=1;
        scanf("%d",&iN);
        for(i=0;i<iN;i++)
        {
            scanf("%d",&iNum);
            qRemove.push_back(iNum);
        }
        while(scanf("%c",&chRequest)==1)
        {
            if(chRequest=='e')
            break;
            if(chRequest=='p')
            {
                scanf("%d",&iPolicy);
                continue;
            }
            if(chRequest=='a')
            {
                scanf("%d",&iNum);
                if(iNum>iMax)
                continue;
                qDate.push_back(iNum);
                continue;
            }
            if(chRequest=='r')
            {
                if(qDate.size()>0)
                {
                    if(iPolicy==1)
                    {
                        qDel.push_back(*min_element(qDate.begin(),qDate.end()));
                        sort(qDate.begin(),qDate.end());
                        qDate.pop_front();
                    }
                    else
                    {
                        qDel.push_back(*max_element(qDate.begin(),qDate.end()));
                        sort(qDate.begin(),qDate.end());
                        qDate.pop_back();
                    }
                }
                else
                {
                    cout<<"-1"<<endl;
                    continue;
                }
            }
        }
        for(i=0;i<iN;i++)
        {
            if(qRemove[i]<=qDel.size())
            cout<<qDel[qRemove[i]-1]<<endl;
        }
        cout<<endl;
    }
    return 0;
}
posted @ 2012-08-28 21:52  Yogurt Shen  阅读(331)  评论(0编辑  收藏  举报