过不了样例,求助unique
查看原帖
过不了样例,求助unique
349824
WsW_花逝爆零人楼主2023/7/16 12:00

思路:按数字排序,unique 去重,按 id 顺序排回去。

#include<bits/stdc++.h>
using namespace std;
struct node{
	int id,s;
	bool operator==(const node &p){
		return s==p.s;
	}
}a[50005];
int T,n;
bool cmp1(node u,node v){
	if(u.s!=v.s)return u.s<v.s;
	else return u.id<v.id;
}
bool cmp2(node u,node v){
	return u.id<v.id;
}
int main(){
	scanf("%d",&T);
	while(T--){
		scanf("%d",&n);
		for(int i=1;i<=n;i++){
			scanf("%d",&a[i].s);
			a[i].id=i;
		}
		sort(a+1,a+n+1,cmp1);
//		for(int i=1;i<=n;i++)printf("%d ",a[i].s);
//		putchar('\n');
		n=unique(a+1,a+n+1)-a;
//		for(int i=1;i<=n;i++)printf("%d ",a[i].s);
//		putchar('\n');
		sort(a+1,a+1+n,cmp2);
		for(int i=1;i<=n;i++)printf("%d ",a[i].s);
		putchar('\n');
	}
	return 0;
}
2023/7/16 12:00
加载中...