思路:模拟。因为只需要比较栈顶和当前要删除的值就可以了,所以如果栈顶和当前要删除的值不同时,栈就可以清空了(因为下一次的栈顶不可能出现在前面那些值中)。
代码:
#include<bits/stdc++.h> using namespace std; #define ll long long vector<int>st; int main() { ios::sync_with_stdio(false); cin.tie(0); int n,temp=1,ans=0; string s; cin>>n; for(int i=0;i<n*2;i++) { cin>>s; if(s[0]=='a') { int a; cin>>a; st.push_back(a); } else { if(!st.empty()&&st.back()!=temp)st.clear(),ans++; else if(!st.empty())st.pop_back(); temp++; } } cout<<ans<<endl; return 0; }