bzoj 2761: [JLOI2011]不重复数字

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<algorithm>
 5 #define M 50008
 6 using namespace std;
 7 struct data
 8 {
 9     int b1,b2;
10 }a[M],c[M];
11 int T,n,b[M],cnt;
12 bool cmp(data a1,data a2)
13 {
14     if(a1.b1==a2.b1)
15       return a1.b2<a2.b2;
16     return a1.b1<a2.b1;
17 }
18 bool cmp1(data a1,data a2)
19 {
20     return a1.b2<a2.b2;
21 }
22 int main()
23 {
24     scanf("%d",&T);
25     for(;T--;)
26       {
27         memset(a,0,sizeof(a));
28         memset(c,0,sizeof(c));
29         scanf("%d",&n);
30         for(int i=1;i<=n;i++)
31           {
32             scanf("%d",&a[i].b1);
33             a[i].b2=i;
34           }
35         sort(a+1,a+n+1,cmp);
36         cnt=1;
37         c[1]=a[1];
38         for(int i=2;i<=n;i++)
39           if(a[i].b1!=a[i-1].b1)
40             {
41                 cnt++;
42                 c[cnt]=a[i];
43             }
44         sort(c+1,c+cnt+1,cmp1);
45         for(int i=1;i<cnt;i++)
46           printf("%d ",c[i].b1);
47         printf("%d",c[cnt].b1);
48         printf("
");
49       }
50     return 0;
51 }

排序去重。

原文地址:https://www.cnblogs.com/xydddd/p/5304572.html