比赛 2025.9.13 评测结果 RRRRRRRRRRRRRRRRRR
题目名称 The Best Lineup 最终得分 0
用户昵称 Gao 运行时间 0.051 s
代码语言 C++ 内存使用 3.68 MiB
提交时间 2025-09-13 11:16:00
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int t,n,a[200005],b[200005],maxx[200005];
int main(){
    freopen("The Best Lineup.in","r",stdin);
    freopen("The Best Lineup.out","w",stdout);
    cin>>t;
    for(int o=1;o<=t;o++){
        cin>>n;
        for(int i=1;i<=n;i++){
            cin>>a[i];
        }
        maxx[n+1]=0;
        for(int i=n;i>=1;i--){
            maxx[i]=max(a[i],maxx[i+1]);
        }
        
        int zhi=0,k=0;
        for(int i=1;i<=n;i++){
            if(maxx[i]==a[i]){
                if(zhi>=maxx[i+1]){
                    for(int j=i;j>k+1;j--){
                        swap(a[j],a[j-1]);
                    }
                    break;
                }
                k=i;
                zhi=0;
            }
            else{
                zhi=max(a[i],zhi);
            }
        }
        int cnt=0,ji=0;
        for(int i=1;i<=n;i++){
            if(i!=1&&a[i]>b[cnt]){
                
                while(a[i]>b[cnt]){
                    cnt--;
                    if(cnt==0){
                        break;
                    }
                }
//                cout<<i<<" ";
            }
//            cout<<endl;
            cnt++;
            b[cnt]=a[i];
        }
//        for(int i=1;i<=n;i++){
//            cout<<a[i]<<" ";
//        }
//        cout<<endl;
        for(int i=1;i<=cnt;i++){
            cout<<b[i]<<" ";
        }
        cout<<endl;
    }
    return 0;
}