L3-002 特殊堆栈 (30 分)

  • vector当栈
  • 利用lower_bound() 维持一个有序vector ```cpp

    include

    using namespace std;

    define ll long long

    define FOR(i,n,m) for(int i =n;i<m;++i)

int main() { ios::sync_with_stdio(false); int n; vector v1,v; //v1当stack ,v当排序好的栈 cin>>n; vector::iterator it; while(n—) { string s ;cin>>s; if(s == “Push”) { int temp; cin>>temp; v1.push_back(temp); it = lower_bound(v.begin(),v.end(),temp); v.insert(it,temp); } else if(s == “Pop”) { if(v1.size() == 0) cout<<”Invalid\n”; else { it = lower_bound(v.begin(),v.end(),v1[v1.size()-1]); v.erase(it); cout<<v1[v1.size()-1]<<”\n”; v1.pop_back(); } } else if(s == “PeekMedian”) { if(v1.size() == 0) { cout<<”Invalid\n”; continue; }

  1. int idx =(v.size()+1)/2 - 1;
  2. cout<<v[idx]<<"\n";
  3. }
  4. }
  5. return 0;

} ```