第一次写,发现模拟根本不会玩,各种情况全要遍历一遍,后来发现可以用栈来写= =
鱼的坐标是按输入的顺序来,第一个输入就是坐标(1,0);
#include<iostream>
#include<algorithm>
#include<stack>
using namespace std;
const int MAXN=100005;
int main()
{
stack<int>stk;
int n,x,y;
cin>>n;
int ans=n;
for(int i=0;i<n;i++)
{
cin>>x>>y;
if(y==1)//也可以改成0,都一样
stk.push(x);
else//方向相反
{
while(!stk.empty())//如果栈里有就比较
{
if(x>stk.top())//如果这条鱼能吃前面的鱼
{
stk.pop();//前面的鱼被吃掉
ans--;//留下的鱼减一
}
else
{
ans--;//如果不能吃,那自己被吃掉,同样减少一条鱼
break;
}
}
}
}
cout<<ans<<endl;
return 0;
}