P2866 [USACO06NOV]Bad Hair Day S
把问题牛能看见多少头牛转化成牛能被多少头牛看见,只要维护一个单调增加的栈,每次累加栈的大小即可
记得开long long
#include<iostream>
using namespace std;
const int N=8e4+5;
long long n,x,s[N],res;
int main()
{
int tt=-1;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>x;
if(tt==-1)
{
s[++tt]=x;
continue;
}
while(tt>=0&&s[tt]<=x)
{
tt--;
}
res+=tt+1;
s[++tt]=x;
}
cout<<res;
}