您的位置:首页 > 其它

refresh的停车场

2015-06-10 09:28 295 查看

Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^

题目描述

refresh最近发了一笔横财,开了一家停车场。由于土地有限,停车场内停车数量有限,但是要求进停车场的车辆过多。当停车场满时,要进入的车辆会进入便道等待,最先进入便道的车辆会优先
进入停车场,而且停车场的结构要求只出去的车辆必须是停车场中最后进去的车辆。现告诉你停车场容量N以及命令数M,以及一些命令(Add num 表示车牌号为num的车辆要进入停车场或便道,
Del 表示停车场中出去了一辆车,Out 表示便道最前面的车辆不再等待,放弃进入停车场)。假设便道内的车辆不超过1000000.

输入

输入为多组数据,每组数据首先输入N和M(0< n,m <200000),接下来输入M条命令。

输出

输入结束后,如果出现停车场内无车辆而出现Del或者便道内无车辆而出现Out,则输出Error,否则输出停车场内的车辆,最后进入的最先输出,无车辆不输出。

示例输入

2 6
Add 18353364208
Add 18353365550
Add 18353365558
Add 18353365559
Del
Out


示例输出

18353365558
18353364208

[code]#include<stdio.h>
#include<string.h>
#include<stdlib.h>

long long  ls[200010], b[1000010],t;
int main()
{
    int n, m;
    while(~scanf("%d%d",&n,&m))
    {
        char a[20];
        memset(ls,0,sizeof(ls));
        memset(b,0,sizeof(b));
        int i,h1=0, r1=0, h2 = 0, r2 = 0, k = 0;
        int c = 0, mm = 0;
        for(i = 0; i < m; i++)
        {
            scanf("%s",a);
            if(strcmp(a,"Add")== 0)
            {
                scanf("%lld",&t);
                if(k < n)
                {
                    ls[r1++] = t;
                    k++;
                }
                else
                {
                    b[r2++] = t;
                    c++;
                }
            }
            else if(strcmp(a,"Del") == 0)
            {
                if(k == 0)
                {
                   // printf("Error\n");
                   mm = 1;
                }
                else
                {
                    k--;
                    r1--;
                    if(b[h2])
                    {
                      ls[r1++] = b[h2];
                      h2++;
                      c--;
                      k++;
                    }
                }
            }
            else
            {
                if(c == 0)
                {
                  // printf("Error\n");
                  mm = 1;

                }
                else
                {
                    c--;
                    h2++;
                }
            }

        }
        if(mm)
           printf("Error\n");
        else
        for(i = r1-1; i >= h1; i--)
        {
            printf("%lld\n",ls[i]);

       }

    }
    return 0;
}

[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: