4 solutions

  • 3
    @ 2022-1-2 15:43:30

    利用multiset记录和删除出入库车的价值,利用它可以排序的特点记录最大价值

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        stack <int> s;
        multiset <int> v;
        int n;
        cin>>n;
        while(n--)
        {   
        	int p,x;
        	cin>>p;
        	switch(p)
        	{
        		case 1:cin>>x;
    			  		s.push(x);
    			  		v.insert(x);
    					break;
        		case 2:if(!s.empty()) 
    			      { 	//出库时在v中找到并删除相应的价值
    				    	v.erase(v.find(s.top()));
    				        s.pop();
    			      }
    			      break;
    			case 3:	
    			  !s.empty()?cout<<*(--v.end())<<endl:cout<<"-1"<<endl;
    			  //判断车库是否为空,没空就输出-1,空的就输出v的最后一个数字(最大)
                  //*(--v.end())为输出v最后一个数字,可以用迭代器替换
    			  break;
    		}
    	}
        return 0;
    }
    

    Information

    ID
    1528
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    5
    Tags
    # Submissions
    73
    Accepted
    23
    Uploaded By