#include "stdio.h"
#define OFFSET 500000 //偏移量,用于补偿实际数字与数组下标之间偏移
int Hash[1000001]; //Hash数组,记录每个数字是否出现,不出现为0,出现为1
int main()
{
int n,m;
while(scanf("%d%d",&n,&m) != EOF)
{
for(int i=-500000; i<500000;++i)//初始化,将每个数字都标记为未出现
{
Hash[i+OFFSET] = 0;
}
for(int j=1;j<=n;++j)
{
int x;
scanf("%d",&x);
Hash[x+OFFSET] = 1;//凡是出现过的数字,该数组元素均被设置成1
}
for(int k=500000;k>=-500000;k--)//输出前m个数
{
if(Hash[k+OFFSET] == 1)
{
printf("%d",k);//输出该数字
m--; //输出一个数字后,m减1,直至m变为0
if(m !=0)
{
printf(" ");
}
else //若m个数字已经被输出完毕,则在输出的数字后面紧跟一个换行,并跳出遍历循环
{
printf("\n");
break;
}
}
}
}
return 0;
}
sort
最新推荐文章于 2023-02-20 18:26:22 发布
