RT
O(nlogn) code:
TLE on #8
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const int N=1e6+7;
int a[N];
map<int,int>mp;
signed main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
if(a[i]) mp[a[i]]=i;
}
int air;
for(int i=1;i<=n;i++){
if(!a[i]){
air=i;
break;
}
}
for(int i=1;i<n;i++){
int pos=mp[i];
a[air]=i;
a[pos]=0;
air=pos;
// for(int i=1;i<=n;i++) cout<<a[i]<<" ";
// puts("");
}
for(int i=1;i<=n;i++) cout<<a[i]<<" ";
return 0;
}
O(n) code: AC
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const int N=1e6+7;
int a[N];
int vis[N];
signed main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
vis[a[i]]=i;
}
int air;
for(int i=1;i<=n;i++){
if(!a[i]){
air=i;
break;
}
}
for(int i=1;i<n;i++){
int pos=vis[i];
a[air]=i;
a[pos]=0;
air=pos;
// for(int i=1;i<=n;i++) cout<<a[i]<<" ";
// puts("");
}
for(int i=1;i<=n;i++) cout<<a[i]<<" ";
return 0;
}