#P1793. 前面第一个比自己大的数的下标.填空题
前面第一个比自己大的数的下标.填空题
题目描述
一个数列包含 个正整数,请按顺序输出数列中每一个数前面第一个(距离自己最近)比自己大的数的下标。如果不存在这样的数请在对应位置输出 0。
输入格式
第 1 行:1 个正整数 ( )。
第 2 行: 个正整数 ( 1<= <= )
输出格式
一行, 个整数,用空格隔开。
样例
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) }}