oj 按顺序输出前M位数

♀尐吖头ヾ 提交于 2020-01-12 15:16:35
## 百万级的数怎么“排序呢?”避免超过1s,建立hash即可,时间在百万级,而排序难免在nlogn,在千万级。
#include<iostream>
using namespace std;

#define OFFSET 500000
int num[1000000];//栈容易爆 
int main(){
	int N,M;
	while(scanf("%d%d",&N,&M)!=EOF){
		for(int i = -500000; i < 500001; i++){
			num[i+OFFSET] = 0;
		}
		for(int i = 0; i < N; i++){
			int x;
			scanf("%d",&x);
			num[x+OFFSET] = 1;
		}

		for(int i = 500000; i >= -500000 ;i--){
			if(num[i+OFFSET]==1&&M>0){
				M--;
				printf("%d",i);
				if(M)
				printf(" ");
				else{ 	
					printf("\n");
					break; 
				} 
			}
		}
		
	}
}```


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!