zoukankan      html  css  js  c++  java
  • cogs 762. [USACO Open09] 奶牛队列

    ★   输入文件:cline.in   输出文件:cline.out   简单对比
    时间限制:1 s   内存限制:128 MB

    农夫约翰有N头牛,编号依次为1~N,他正在把这些牛排成一队,队伍中开始是没有牛的,随着时间推移,牛儿一个一个地从左端或右端加入到队伍中来。令人烦心的是,随时会有一些牛从左端或右端离开队伍溜向草场。

    FJ正费劲地给牛排队,请你帮帮他。

    奶牛按1~N的顺序入队,牛一旦离队就再也不会回来了,你的程序将处理给定的S(1 <= S <= 100,000)个输入指令,每一个指令占一行,指令有两种类型:

    *一头牛入队(带有一个参数,代表从左端入队还是右端入队)
    *K头牛从左端或右端离队(提供的参数包括离队牛数及是从哪端离队)

    输入指令中没有提到的操作则不会被执行。

    当所有的输入指令都执行完毕后,你的程序必须要按从左到右的顺序输出队伍中牛的编号,最后的队伍保证不为空。


    输入格式:
    第1行:一个整数S;
    第2~S+1行:第i+1行写着一个指令,指令有4种格式:
    *A L ——表示有一头牛从左端入队;
    *A R ——表示有一头牛从右端入队;
    *D L K ——表示有K头牛从队伍左端离队;
    *D R K ——表示有K头牛从队伍右端离队;

    输出格式:
    第1~??行:按从左到右的顺序输出队伍中牛的编号,一个数一行。

    输入输出样例:
    cline.in
    10
    A L
    A L
    A R
    A L
    D R 2
    A R
    A R
    D L 1
    A L
    A R

    cline.out
    7
    2
    5
    6
    8

    输出样例解释:
    指令   执行完指令后牛的队伍
    A L    1
    A L    2 1
    A R    2 1 3
    A L    4 2 1 3
    D R    2 4 2
    A R    4 2 5
    A R    4 2 5 6
    D L    1 2 5 6
    A L    7 2 5 6
    A R    7 2 5 6 8

    //初始设一个很大的数,从中间向两边扩展 
    #include<iostream> 
    #include<cstdio>
    #define N 100010
    using namespace std;
    
    int q;
    int f[N]={0};
    void work()
    {
        int i,j,k,l,r,num,tot=0,L;
        char op,ha;
        l=50000;
        r=49999;
        cin>>q;
        for(i=1;i<=q;i++)
        {
            cin>>op;
            if(op=='A')
            {
                cin>>ha;
                tot++;
                if(ha=='R')f[++r]=tot;
                if(ha=='L')f[--l]=tot;
            }
            else
            {
                cin>>ha>>num;
                L=r-l+1;
                if(num>=L)l=r;
                else
                {
                    if(ha=='L')l+=num;
                    else r-=num;
                }
            }
            
        }
        for(k=l;k<=r;k++)cout<<f[k]<<endl;
    }
    int main()
    {
        freopen("cline.in","r",stdin);
        freopen("cline.out","w",stdout);
        work();
        return 0;
    }
  • 相关阅读:
    C++11 std::function函数包装器
    C++ spdlog日志管理
    c++ error C2663:n个重载没有“this”指针的合法转换
    nlohmann json for modern C++
    更新CMake3.16+的方法
    VS 设置Tab为空格
    Visual Studio 2019 UTF-8编码调试显示中文
    Notepad++ 设置Tab为空格
    C++11 =default 和 =delete
    C++11 constexpr
  • 原文地址:https://www.cnblogs.com/lyqlyq/p/7096231.html
Copyright © 2011-2022 走看看