奇怪的单调栈写法,希望大家帮忙hack一下
下面是代码
#include <iostream>
using namespace std;
int main(){
int n;
scanf("%d",&n);
int a[n]={0};
int stack[n]={0};
int res[n]={0};
int index=-1;
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
while(index>=0 && a[i]>a[stack[index]]){
res[stack[index]]=i+1;
index--;
}
index++;
stack[index]=i;
}
for(int i=0;i<n;i++){
printf("%d ",res[i]);
}
return 0;
}