@[Myself_Hisy](/user/922691)
```cpp
#include<cstdio>
using namespace std;
int stack[3000001];
int a[3000001];
int ans[3000001];
int main()
{
int n , top = -1;
scanf( "%d" , &n );
for( int i = 1; i <= n; i++ )
{
scanf( "%d" , &a[i] );
}
for( int i = n; i >= 1; i-- )
{
while( top >= 0 && a[i] >= a[stack[top]] )
{
top--;
}
top++;
stack[top] = i;
if( top <= 0 )
{
ans[i] = 0;
}
else
{
ans[i] = stack[top - 1];
}
}
for( int i = 1; i <= n; i++ )
{
printf( "%d " , ans[i] );
}
return 0;
}
```
手写可过
by XBaiC @ 2023-08-24 21:27:00