问题描述
有n个魔法师在排队买魔法面包,每个魔法师都有自己的魔力值,用一个正整数表示。 魔法师都不喜欢排队,如果任意时刻某个魔法师发现前面的魔法师的魔力值比自己小,那么这个魔法师就会用法术把前面的人传送到异空间。 请输出有多少个魔法师会被传送到异空间。
输入数据要求
第一行为一个正整数n,代表魔法师的人数。 接下来一行位n个正整数,第i个正整数ai代表队伍中第i个魔法师的魔力值。(第1个魔法师在队头,第n个魔法师在队尾) 1<=n<=1000000 1<=ai<=100000000
输出数据
被传送到异空间的魔法师个数
样例输入
5
4 5 1 3 2
W###B#
输出结果
2
代码
// An highlighted block
#include<iostream>
#include<stack>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int n;
stack<int> s;
cin>>n;
int temp;
int count=0;
for(int i=0;i<n;i++){
cin>>temp;
if(int(s.size()) == 0){
s.push(temp);
}
else{
while(!s.empty()){
int top_v = s.top();
if(temp>top_v){
count++;
s.pop();
}
else{
break;
}
}
s.push(temp);
}
}
cout<<count<<endl;
}