要在一个数列里面找一个数,与他后面比他大的数的距离最大。
记录每个数字的位置后按照数字大小排序。
然后从小到大更新最大值
提示要用单调栈,可是想了半天也不会。。。。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int>pii;
const int N=1e6+9;
pii a[N];
int main()
{
//freopen("in.txt","r",stdin);
int n,cnt=0;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i].first);
a[i].second=i;
}
sort(a,a+n);
int minpos=a[0].second,ans=0;
for(int i=1;i<n;i++){
if(a[i].second>minpos)ans=max(ans,a[i].second-minpos);
else minpos=a[i].second;
}
printf("%d\n",ans);
return 0;
}