您的位置:首页 > 其它

bzoj 2761 不重复数字

2015-02-03 14:45 204 查看
先排序,然后把重复的改成很大的数,再排序,最后输出结果“不为那个很大的数”的数。

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
#define Maxn 1100000
#define Maxp 9999999

using namespace std;

struct node
{
int x,y;
}a[Maxn];

bool Cmp1(node a1,node a2)
{
if(a1.x==a2.x)return a1.y<a2.y;
else return a1.x<a2.x;
}

bool Cmp2(node a1,node a2)
{
return a1.y<a2.y;
}

int n;

int main()
{
int t;
scanf("%d",&t);

while(t--)
{
int i;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i].x);
a[i].y=i;
}
sort(a+1,a+n+1,Cmp1);

for(i=1;i<=n;i++)
{
while(a[i+1].x==a[i].x)a[++i].y=Maxp;
}

sort(a+1,a+n+1,Cmp2);
int o=0;
for(i=1;i<=n;i++)
{
if(a[i].y<Maxp) if(o==0){printf("%d",a[i].x);o++;}
else printf(" %d",a[i].x);
}
printf("\n");

}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: