题意:两个操作,add:往栈里push一个数。remove。移除栈顶元素。现在要求将数字按1-n顺序移除。问你需要改动多少次后满足。改动:当遇到不满足时,可以将栈内元素排序。
思路:模拟下
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 stack<int >s; 5 6 int main(){ 7 int n; 8 int x; 9 char a[10]; 10 scanf("%d",&n); 11 int aa=1,sum=0;; 12 for(int i=1;i<=2*n;i++){ 13 scanf("%s",a); 14 if(a[0]=='a'){ 15 scanf("%d",&x); 16 s.push(x); 17 } 18 else { 19 if(s.empty()) ; 20 else if(s.top()==aa) s.pop(); 21 else { 22 sum++; 23 while(!s.empty()) s.pop(); 24 } 25 aa++; 26 } 27 } 28 cout<<sum<<endl; 29 }