比赛 期末考试3 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 hope I can be awake 最终得分 100
用户昵称 梦那边的美好ME 运行时间 0.230 s
代码语言 C++ 内存使用 4.58 MiB
提交时间 2026-02-11 10:18:58
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
#define ll long long

ll n,k;
ll a[210000],ot[410000],ans[210000];
bool in[410000];
ll cnt,cnt1,cnt2,cnt3,sum;

int main(){
    freopen("hopeicanbeawake.in","r",stdin);
    freopen("hopeicanbeawake.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>n>>k;
    for (int i=1;i<=k;i++){
        cin>>a[i];
        in[a[i]]=1;
    }
    for (int i=1;i<=max(n,a[k])*2;i++){
        if (!in[i]){
            ot[++cnt]=i;
        }
    }
    ans[1]=a[1];cnt1=1;
    for (int i=2;i<=k;i++){
        if (sum<n-k){
            if (a[i]>ot[cnt2+1]&&a[i-1]>ot[cnt2+1]){
                ans[++cnt1]=ot[++cnt2];
                sum++;
            }
        }
        ans[++cnt1]=a[i];
    }
    if (sum==n-k){
        for (int i=1;i<=cnt1;i++){
            cout<<ans[i]<<" ";
        }
        return 0;
    }
    sum=n-k-sum;
    for (cnt3=cnt2;;cnt3++){
        if (ot[cnt3]>a[k]){
            cnt3--;
            break;
        }
    }
    if (cnt3-cnt2>=sum){
        for (int i=1;i<=cnt1;i++){
            cout<<ans[i]<<" ";
        }
        for (int i=sum+cnt2;i>cnt2;i--){
            cout<<ot[i]<<" ";
        }
    }else{
        for (int i=1;i<cnt1;i++){
            cout<<ans[i]<<" ";
        }
        for (int i=sum-cnt3+cnt2+ans[cnt1];i>=ans[cnt1];i--){
            cout<<i<<" ";
        }
        for (int i=cnt3;i>cnt2;i--){
            cout<<ot[i]<<" ";
        }
    }
    
    return 0;
}