题意:给你一个数组然后按照数组顺序压入队列,你可以压到队头也可以压入队尾
思路:双端队列模板题,把数组的当前值与队列头的值比较:大的压入队尾,小的压入队头
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<deque>
#include "vector"
using namespace std;
int arr[200005];
int main(){
int t;
int n;
cin >> t;
while(t--){
cin >> n;
for(int i = 0; i < n; i++){
cin >> arr[i];
}
deque<int> q;
int ans = 0;
for(int i = 0; i < n; i++){
if(arr[i] > ans){
q.push_back(arr[i]);
}else{
q.push_front(arr[i]);
}
ans = arr[i];
}
vector<int> ve;
while(!q.empty()){
ve.push_back(q.front());
q.pop_front();
}
for(int i = 0; i < ve.size(); i++){
if(i != 0){
cout << " ";
}
cout << ve[i];
}
cout << endl;
}
return 0;
}