简单单调栈。
#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
#include <map>
#include <vector>
#include <cmath>
#include <stack>
#include <queue>
#include <cstdlib>
#include <algorithm>
using namespace std;
typedef __int64 int64;
typedef long long ll;
#define M 100005
#define N 1000005
#define max_inf 0x7f7f7f7f
#define min_inf 0x80808080
#define mod 1000000007
ll q[M];
int main()
{
ll i , top , n , ans , x;
while (~scanf("%lld",&n))
{
top = ans = 0;
for (i = 0 ; i < n ; i++)
{
scanf("%lld",&x);
while (top > 0 && q[top-1] <= x)top--;
ans += top;
q[top++] = x;
}
printf("%lld\n",ans);
}
return 0;
}