题目
奶牛们又出去锻炼蹄子去了!有 N头奶牛在无限长的单行道上慢跑。每头奶牛在跑道上开始奔跑的位置互不相同,一些奶牛的奔跑速度可能相同,也可能不同。由于跑道是单行道,十分狭窄,奶牛们无法相互超越。当一头速度很快的牛追上另一头牛时,她必须减速至与另一头牛速度相同以免发生碰撞,并成为同一跑步小组的一员。此时,两头牛可以视为在同一点上。最终,再也没有奶牛会撞到(追上)其他奶牛了。
约翰想知道在这种情况下,会剩下多少个跑步小组。
输入格式
第一行包含整数 N接下来 N行,每行包含一头奶牛的初始位置和跑步速度。
所有奶牛的初始位置各不相同,且是按照递增顺序给出的。
输出格式
输出一个整数,表示最终剩下的小组数量。
示例
输入样例:
5
0 1
1 2
2 3
3 2
6 1
输出样例:
2
思路
单调栈
代码
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int n,x,speed;
cin>>n;
vector<int> a;
for(int i=0;i<n;i++)
{
cin>>x>>speed;
while(a.size() && speed < a.back()) a.pop_back();
a.push_back(speed);
}
cout<<a.size()<<endl;
return 0;
}