25pts求条
查看原帖
25pts求条
1125303
Conan_Spaceor楼主2025/6/30 21:59
#include<bits/stdc++.h>
#define MX 300000
using namespace std;
int a[MX + 10];
stack<int> s;
int ans;
int main()
{
	int n,i,j;
	cin >> n;
	for (i = 1;i <= n;i++)
	{
		cin >> a[i];
	}
	s.push(1);
	int mn = a[1],ma = a[1];
	for (i = 2;i <= n + 1;i++)
	{
		if (a[i] < ma && a[i] >= mn)
		{
			s.push(i);
		}
		else if (a[i] >= ma)
		{
			s.push(i);
			ma = a[i];
		}
		else//a[i] < mn
		{
			int t = 0,mc = -1,mv = INT_MAX;
			while(!s.empty() && a[s.top()] < ma)
			{
				ans++;
				mc = max(mc,a[s.top()]);
				mv = min(mv,a[s.top()]);
				t = a[s.top()];
				s.pop();
			}
			if (a[i - 1] == mc && mv == t)
			{
				ans = ans - i + s.top() + 2;
			}
			if (!s.empty())
			{
				ans++;
			}
			mn = ma = a[i];
			s.push(i);
		}
	}
	cout << ans << endl;
	return 0;
}

隐约感觉思路有问题,不奇怪地WA了。

2025/6/30 21:59
加载中...