#include<iostream>
using namespace std;
struct zoe{
int k,pos;
bool f=false;
};
int main(){
zoe stack[100005];
int ans[10005]={0};
int top=0,n,t;
cin>>n;
top++;
cin>>stack[top].k;
stack[top].pos=1;
for(int i=2;i<=n;i++)
{
cin>>t;
if(t<=stack[top].k){
top++;
stack[top].k=t;
stack[top].pos=i;
}
else{
while(top>=1&&stack[top].k<t){
ans[stack[top].pos]=i;
top--;
}
top++;
stack[top].k=t;
stack[top].pos=i;
}
}
for(int i=1;i<=n;i++) cout<<ans[i]<<endl;
return 0;
}#include<iostream>
using namespace std;
struct zoe{
int k,pos;
bool f=false;
};
int main(){
zoe stack[100005];
int ans[10005]={0};
int top=0,n,t;
cin>>n;
top++;
cin>>stack[top].k;
stack[top].pos=1;
for(int i=2;i<=n;i++)
{
cin>>t;
if(t<=stack[top].k){
top++;
stack[top].k=t;
stack[top].pos=i;
}
else{
while(top>=1&&stack[top].k<t){
ans[stack[top].pos]=i;
top--;
}
top++;
stack[top].k=t;
stack[top].pos=i;
}
}
for(int i=1;i<=n;i++) cout<<ans[i]<<endl;
return 0;
}
49分求助