【USACO 2014 Dec Bronze】奶牛慢跑 | |
|
问题描述
有N(1 <= N <= 100,000)头奶牛在一条无限长的笔直小路上慢跑,我们可以把这条小路看成数轴,每头奶牛的起始位置都不相同,奶牛们的跑步速度也可能不同。
因为只有一条跑道,跑得快的那牛无法超越速度慢的。当一头速度快的奶牛追上一头速度慢的,它只能降低速度跟在速度慢的奶牛后面,这样下去就会形成一条长长的慢跑队伍。
农夫约翰想知道,最终会形成多少条慢跑队伍?
输入格式
第一行,一个整数N
接下来N行,每行两个整数,分别描述一头奶牛的起始位置和速度(位置和速度都不超过1,000,000)。
N头奶牛的信息按起始位置由小到大给出
输出格式
一行,一个整数,表示所求的答案
样例输入
5
0 1
1 2
2 3
3 2
6 1
样例输出
2
提示
样例说明:
第1头奶牛单独形成一个队伍
第2、3、4、5、6构成一个队伍
栈
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,x,v;
cin>>n;
vector<int> a;
for(int i=0;i<n;i++){
cin>>x>>v;
while(a.size()&&v<a.back()){
a.pop_back();
}
a.push_back(v);
}
cout<<a.size();
}