#P1793. 前面第一个比自己大的数的下标.填空题

前面第一个比自己大的数的下标.填空题

题目描述

一个数列包含 nn 个正整数,请按顺序输出数列中每一个数前面第一个(距离自己最近)比自己大的数的下标。如果不存在这样的数请在对应位置输出 0。

输入格式

第 1 行:1 个正整数 nn1n1000001 \le n \le 100000 )。

第 2 行: nn 个正整数 aia_i ( 1<= aia_i <= 106{10}^6

输出格式

一行, nn 个整数,用空格隔开。

样例

10
14 14 1 16 7 8 26 13 5 15 
0 0 2 0 4 4 0 7 8 7

完成程序

#include<bits/stdc++.h>
using namespace std;
int x[100001],s[100001],n,top;
int main()
{
	scanf("%d",&n);
	top=0;
	for(int i=1;i<=n;i++){
		scanf("%d",&x[i]);
		
        //维护一个单调递减栈,栈内存放的下标
        //如果栈顶比新来的数字小,出栈
		while(top>0&&__填空(1)__)
            __填空(2)__; // 出栈
		
		printf("%d ",__填空(3)__);
		__填空(4)__; // 新来的数字的下标入栈
	}

	return 0;
}

填空(1):{{ input(1) }}

填空(2):{{ input(2) }}

填空(3):{{ input(3) }}

填空(4):{{ input(4) }}