看视频之前日常先看题目然后自己试一遍(一般不是wa就是tle再或者压根不会一个字都敲不出来)
万万没想到这次居然暴力过了= =
原理就是优化过的暴力枚举,声明了一个min变量判断左边有没有小于这个数的数,如果有就挨个枚举直到找到。
应该是数据给的比较宽松,极限情况下暴力枚举应该是会直接tle的......
大家不要学我orz
上代码
#include<bits/stdc++.h>
using namespace std;
#define MAX 1000005
int n,a[MAX],i,j,ans[MAX];
int main()
{
int min=(int)1e9;
cin>>n;
for(i=0;i<n;i++)
{
cin>>a[i];
if(a[i]>min)
{
for(j=i-1;j>=0;j--)
if(a[j]<a[i])
{
ans[i]=a[j];
break;
}
}
else ans[i]=-1;
if(a[i]<min) min=a[i];
}
for(i=0;i<n;i++)
cout<<ans[i]<<" ";
return 0;
}