是不是只有cpp才能过啊,开gc超时,不开又爆内存
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
class sta{
int [] arr;
int i=0;
sta(int n){
arr=new int[n];
}
int get(){
return arr[i-1];
}
boolean isEmpty(){
return i==0;
}
void remove(){
i--;
}
void add(int n){
arr[i]=n;
i++;
}
}
class Main{
public static void main(String[] args) throws IOException {
StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
st.nextToken();
int n= ((int) st.nval);
int [] arr=new int[n];
int [] rtu=new int[n];
for (int i = 0; i < n; i++) {
st.nextToken();
arr[i]=(int)st.nval;
}
sta list =new sta(n);
for (int i = n-1; i >= 0; i--) {
while (true){
if(list.isEmpty()){
rtu[i]=-1;
list.add(i);
break;
}else if(arr[list.get()]<=arr[i]){
list.remove();
}else {
rtu[i]= list.get();
list.add(i);
break;
}
}
}
for (int i : rtu) {
System.out.print(i+1+" ");
}
}
}