题解:CF2044D Harder Problem
CF2044D Harder Problem
思路
构造一个 \(1\sim n\) 都出现了一次的数列(这样每个数都是众数了),然后只要保证在数组 \(a\) 里面出现了的数在最前面就好了。
AC代码
#include<bits/stdc++.h>
using namespace std;
#define N 200005
long long t,vis[N],cnt,n,a[N];
int main(){
cin>>t;
while(t--){
memset(vis,0,sizeof(vis)),cnt=0;
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++){
if(vis[a[i]]==1) cnt++;
else{
vis[a[i]]=1;
cout<<a[i]<<" ";
}
}
for(int i=1;i<=n;i++){
if(vis[i]!=1) cout<<i<<" ";
}
}
}

浙公网安备 33010602011771号