应该是手写栈错误吧
#include <cstdio>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <iomanip>
#include <vector>
#define intmax 0x7fffffff
using namespace std;
const int R=1e6*3+1;
int stack[R],size=0,n,arr[R],ans[R];
void push(int num)
{
stack[++size]=num;
}
void pop()
{
size--;
}
bool Empty()
{
return size==0?true:false;
}
int top()
{
return stack[size];
}
int main(int argc,char **argv)
{
scanf("%d",&n);
for (int i=1;i<=n;i++)
scanf("%d",&arr[i]);
for (int i=1;i<=n;i++)
{
if (!Empty() && arr[top()]<=arr[i])
pop();
ans[i]=Empty()?0:top();
push(i);
}
for (int i=1;i<=n;i++)
printf("%d ",ans[i]);
return 0;
}