代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 3e5 + 10;
int n, ans, d, w;
stack<int> s;
// 单调栈
// 如果楼高度类似121(凸,两边相等,中间比两边的大),则海报个数=3-1=2
// 如果楼高度类似212(凹,两边相等,中间比两边的小),则海报个数=3
// 例子:如果楼高为1,2,3,4,1,则使用单调递增栈,
// 栈中元素为1234时,此时1要进栈:4,3,2,1先出栈,1再进栈,所以使用5-1=4张海报
int main()
{cin >> n;for (int i = 1; i <= n; i++){cin >> d >> w;while (!s.empty() && w <= s.top()){if (s.top() == w){ // 遇见相等的ans++;}s.pop();}s.push(w);}cout << n - ans;return 0;return 0;
}