在使用单调栈的过程中,栈中保留的奶牛 都是比当前 值 大的奶牛,这时记录此时栈中的奶牛数量,就是在当前奶牛的前面所有奶牛当中可以看到当前奶牛的奶牛数量。。。。好绕口。。。。。
#include<cstdio>
#include<cstring>
using namespace std;
long long int stack[88888];
long long d[88888];
int main()
{
int n;
memset(stack,0,sizeof(stack));
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%lld",&d[i]);
int tot=0;
long long res=0;
for(int i=0;i<n;i++)
{
while(tot>0&&stack[tot-1]<=d[i])
tot--;
res+=tot;
stack[tot++]=d[i];
}
printf("%lld\n",res);
}