这题
以前写过
偷懒
没重写
维护一个不下降的序列
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
#include<queue>
#include<vector>
using namespace std;
int n,a[510000],i,t,x,f,flag,k;
int main()
{
scanf("%d",&n);
scanf("%d",&a[1]);
t=1;
for(i=2;i<=n;i++)
{
scanf("%d",&x);
flag=0;
if(x>=a[t])
{
while(a[t]<x&&t>=1)
{
f++;
t--;
}
if(x==a[t])
{
k=t;
while(a[k]==x)
{
k--;
f++;
}
if(k!=0) f++;
t++;
a[t]=x;
flag=1;
}
if(flag==0)
{
if(t!=0) f++;
t++;
a[t]=x;
}
}
else
{
f++;
t++;
a[t]=x;
}
}
printf("%d",f);
return 0;
}