代码:
#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;
}