问题描述
有N条鱼,每条鱼的位置及大小均不同,他们沿着X轴游动,有的向左,有的向右。游动的速度是一样的,两条鱼相遇大鱼会吃掉小鱼。从左到右给出每条鱼的大小和游动的方向。问足够长的时间之后,能剩下多少条鱼?
输入描述
第一行一个整数N。
之后N行,每行有一个整数和一个字符组成。整数表示鱼的大小;字符表示鱼游动的方向为L或者R,L表示向左,R表示向右。
输出描述
一个整数,表示最终剩下的鱼的数量。
输入样例
5
4 L
3 R
2 L
1 R
5 L
输出样例
2
数据范围
N<=2000
这道题呢来一看可以用栈+模拟做出来:
#include <bits/stdc++.h>
using namespace std;
int n,ans;
int a;
int s[100000],c;
char b;
int main()
{
cin>>n;
for(int i=1;i<=n;i++){
cin>>a>>b;
if(b=='L'){
while(c&&s[c-1]<a)c--;
if(!c)ans++;
}
else s[c++