找不到错误
#include<bits/stdc++.h>
using namespace std;
long long n,a[1000000],ans,qq,b[1000000];
stack<long long>q;
int main()
{
cin>>n;
for(int i=1;i<=n;i++){cin>>a[i];b[i]=1;}
for(int i=n;i>=1;i--)
{
if(a[i]==a[i+1]){b[i]+=b[i+1];b[i+1]=1;}
}
for(int i=1;i<=n;i++)
{ if(b[i]>1)ans+=(b[i]-1)*b[i]/2;
if(q.empty()){q.push(i);}
else
{
while(!q.empty()&&a[i]>a[q.top()])
{
ans+=b[q.top()];
q.pop();
}
while(q.size()>0&&a[i]<a[q.top()])
{
ans+=b[i];
q.push(i);
}
if(q.empty()){q.push(i);}
}
}
cout<<ans;
return 0;
}