zoukankan      html  css  js  c++  java
  • L3002 特殊堆栈 (30 分)

    L3-002 特殊堆栈 (30 分)

    堆栈是一种经典的后进先出的线性结构,相关的操作主要有“入栈”(在堆栈顶插入一个元素)和“出栈”(将栈顶元素返回并从堆栈中删除)。本题要求你实现另一个附加的操作:“取中值”——即返回所有堆栈中元素键值的中值。给定 \(N\) 个元素,如果 \(N\) 是偶数,则中值定义为第 \(\frac{N}{2}\) 小元;若是奇数,则为第 \(\frac{N+1}{2}\) 小元。

    输入格式:

    输入的第一行是正整数 \(N \; (\leq 10^{5})\)。随后 \(N\) 行,每行给出一句指令,为以下 \(3\) 种之一:

    Push key
    Pop
    PeekMedian
    

    其中 key 是不超过 \(10^{5}\) 的正整数;Push 表示“入栈”;Pop 表示“出栈”;PeekMedian 表示“取中值”。

    输出格式:

    对每个 Push 操作,将 key 插入堆栈,无需输出;对每个 PopPeekMedian 操作,在一行中输出相应的返回值。若操作非法,则对应输出 Invalid

    输入样例:

    17
    Pop
    PeekMedian
    Push 3
    PeekMedian
    Push 2
    PeekMedian
    Push 1
    PeekMedian
    Pop
    Pop
    Push 5
    Push 4
    PeekMedian
    Pop
    Pop
    Pop
    Pop
    

    输出样例:

    Invalid
    Invalid
    3
    2
    2
    1
    2
    4
    4
    5
    3
    Invalid
    

    参考代码:

    #include<bits/stdc++.h>
    using namespace std;
    #define maxn 100005
    #define maxm 200005
    int n,x;
    string s;
    vector<int>v,v1;
    int main()
    {
        cin>>n;
        while(n--)
        {
            cin>>s;
            if(s=="Pop")
            {
                if(v.empty())cout<<"Invalid"<<endl;
                else
                {
                    auto it=lower_bound(v1.begin(),v1.end(),v[v.size()-1]);
                    v1.erase(it);
                    cout<<v[v.size()-1]<<endl;
                    v.pop_back();
                }
            }
            else if(s=="PeekMedian")
            {
                if(v.empty())cout<<"Invalid"<<endl;
                else cout<<v1[(v1.size()-1)/2]<<endl;
            }
            else
            {
                cin>>x;
                v.push_back(x);
                auto it=lower_bound(v1.begin(),v1.end(),x);
                v1.insert(it,x);
            }
        }
        return 0;
    }
    
  • 相关阅读:
    前端网站汇总
    更换Sublime Text主题字体
    免费收录网站搜索引擎登录口
    IE6,7,8支持css圆角
    CSS继承—深入剖析
    JavaScript正则表达式大全
    CSS伪元素选择器
    line-height用法总结
    判断腾讯QQ是否在线
    text-overflow使用文字超多div的宽度或超过在table中<td>
  • 原文地址:https://www.cnblogs.com/LengYun/p/14688804.html
Copyright © 2011-2022 走看看