| 比赛 |
期末考试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;
}