直接从当前位置往后找第一个比当前位置大的数记录下标,然后输出就可以了.
下面是代码

#include<bits/stdc++.h>
int dp[10005];
long long num[10005];
int n;
int main(void)
{
    int Max = 0;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
        scanf("%d",&num[i]);
    for(int i=0;i<n;i++)
    {
        dp[i] = 0;
        for(int j=i+1;j<n;j++)
            if(num[j] > num[i])
            {
                dp[i] = j + 1;
                break;
            }

    }

    for(int i=0;i<n;i++)
        printf("%d ",dp[i]);
    return 0;
}