有些时候我们会发现数组占用内存过大,函数所可以使用的栈空间将不足以提供如此庞大的内容,出现栈溢出,导致程序异常终止。
今后凡是涉及需要开辟大量内存空间的情况,我们都必须在函数体外定义,即定义为全局变量。
#include <stdio.h>
#include<iostream>
#define MAX 1000000
#define dis 500000
using namespace std;
int a[MAX+1];//必须定义成成员变量
int main(){
int n,m,b;
int cnt=0;
while(scanf("%d %d",&n,&m)!=EOF){
for(int i=0;i<=MAX;i++){
a[i]=0;
}
for(int i=0;i<n;i++){
cin>>b;
a[b+dis]=1;
}
for(int i=MAX;i>=0;i--){
if(a[i]==1){
cnt++;
cout<<i-dis<<" ";
}
if(cnt==m)
break;
}
}
return 0;
}