题解: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<<" ";
		}
	}
}

AC记录

posted @ 2025-01-03 11:28  SuperJimmy  阅读(45)  评论(0)    收藏  举报