2500 后面第一个大于
- 2 秒
- 262,144 KB
- 10 分
- 2 级题
小b有一个长度为n的序列t,现在她对于每个i,求最小的正数j满足i+j≤ni+j≤n且ti+j>titi+j>ti,输出j,如果不存在这样的j,则输出0。
样例解释:
对于i=1,t2>t1t2>t1,所以最小的j=1;
对于i=7,不存在这样的j,所以输出0。
收起
输入
第一行输入一个数n; 第二行输入n个数t1-tn,以空格隔开; 其中1≤n≤30000,对于任意ti满足30≤ti≤100.
输出
输出一行n个数,第i个数表示i的答案。
输入样例
8 73 74 75 71 69 72 76 73
输出样例
1 1 4 2 1 1 0 0
#include<bits/stdc++.h>
using namespace std;
int a[30010];
int main()
{
int n,i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(a[j]>a[i])
{
printf("%d ",j-i);
break;
}
}
if(j==n)
printf("0 ");
}
printf("0\n");
return 0;
}