显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1000010;
const int M=2010;
const int MOD=998244353;
int T;
struct Node{
int num,p;
}a[N];
bool cmp(Node a,Node b)
{
if(a.num==b.num) return a.p<b.p;
return a.num>b.num;
}
int main()
{
freopen("Lineup.in","r",stdin);
freopen("Lineup.out","w",stdout);
cin>>T;
while(T)
{
T--;
int n;
cin>>n;
memset(a,0,sizeof(a));
for(int i=1;i<=n;i++){
cin>>a[i].num;
a[i].p=i;
}
sort(a+1,a+n+1,cmp);
int p1=0,p2=0;
for(int i=1;i<=n;i++){
if(a[i].p>a[p1].p){
p2=p1;
p1=i;
}
if(a[p2].p<a[i].p&&a[i].p<a[p1].p){
a[p1].p=a[p2].p;
break;
}
}
int t=0;
for(int i=1;i<=n;i++){
if(a[i].p>=a[t].p){
cout<<a[i].num<<' ';
t=i;
}
}
cout<<endl;
}
return 0;
}