比赛 期末考试3 评测结果 AAAAAAAAAWAAEAAAAEAA
题目名称 hope I can be awake 最终得分 85
用户昵称 zhyn 运行时间 0.576 s
代码语言 C++ 内存使用 4.10 MiB
提交时间 2026-02-11 11:03:52
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;

#define maxn 200100
int a[maxn],b[maxn],num[maxn];
int c[maxn][3];
bool vis[maxn];
int n,k,tot=0,cnt,top=1;
int u[maxn],v[maxn]; 

int main(){
	
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	
	freopen("hopeicanbeawake.in","r",stdin);
	freopen("hopeicanbeawake.out","w",stdout);	
	
	cin>>n>>k;
	a[0]=0;
	cnt=k+1;
	for(int i=1;i<=k;i++){
		cin>>a[i];
		vis[a[i]]=true;
		u[i]=a[i];
		v[i]=i+1;
	}
	v[k+1]=0;
	
	for(int i=1;i<=n;i++){
		if(!vis[i]){
			b[++tot]=i;
		}
	}
	
	int i=1,j=1;
	for(i=1,j=1;i<=tot&&j<=k;j++){
		if(b[i]<a[j]){
			u[++cnt]=b[i];
			v[j]=cnt;
			v[cnt]=j+1;
			i++; 
		}
	} 
	
	if(i<=tot){
		if(a[k]==n){
			for(j=1;v[j];j=v[j]){
				cout<<u[j]<<" ";
			}	
			for(j=tot;j>=i;j++){
				cout<<b[j]<<" ";
			}
		}
		else{
			
			for(j=1;v[j];j=v[j]){
				if(u[j]==a[k]){
					break;
				} 
				cout<<u[j]<<" ";
			}
			for(j=n;j>a[k];j--){
				cout<<j<<" ";
			}
			cout<<a[k]<<" ";
			for(j=tot;j>=max(i-1,1);j--){
				if(b[j]>a[k]){
					continue;
				}
				cout<<b[j]<<" ";
			}
		}
	}
	else{
		for(j=1;v[j];j=v[j]){
			cout<<u[j]<<" ";
		}	
	}
	
	return 0;
}