#include<cstdio> #include<stack> using namespace std; int n,a[3000005],f[3000005]; stack<int>s; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=n;i>=1;i--) { while(!s.empty()&&a[s.top()]<=a[i]) s.pop(); f[i]=s.empty()?0:s.top(); s.push(i); } for(int i=1;i<=n;i++) printf("%d ",f[i]); return 0; }
原文:https://www.cnblogs.com/qq1415584788/p/14754130.html