当前位置: 代码迷 >> C语言 >> 请教大家一个ACM题
  详细解决方案

请教大家一个ACM题

热度:325   发布时间:2007-08-06 15:35:29.0
请教大家一个ACM题

sort

Time Limit:1000MS Memory Limit:65536K
Total Submit:90 Accepted:15

Description

Given n integer numbers, you should select the m numbers of the bigger ones and output them from big one to small one.

Input

The input file contains many test cases.
Each case has 2 lines.
The first line consists of 2 integer number n and m ( 0 < n, m < 1000000).
The next line has n numbers, and all numbers between -500000 and -500000.

Output

For each case, you should output the m integer numbers, order by descent.

Sample Input


5 3
3 -35 92 213 -644


Sample Output


213 92 3


Hint

If n=10 m=3
and the 10 numbers are:
10 9 10 8 7 6 5 4 1 2
you should output:
10 10 9

代码如下
#include <stdio.h>
#include <string.h>

main()
{
int a[1000001];
int i ,j ,n ,m, flag=0,count ,num;
while( scanf("%d%d",&n,&m)!=EOF)
{
count =0;
flag=0;
memset(a,0,sizeof(a));
for(i=0;i<n;i++)
{
scanf("%d",&num);
a[num+500000]++;
}
for(i=1000000; ;i--)
{
for(j=a[i];j > 0;j--)
{
printf("%d ",i-500000);
count++;
if(count==m)
{
flag=1;
break;
}
}
if(flag)
{
printf("\n");
break;
}
}
}
}
本地调试通过,但提交的时候显示runtime error,我实在找不出错误了,大家帮忙找下,谢了~!

搜索更多相关的解决方案: ACM  

----------------解决方案--------------------------------------------------------
为什么没人帮我啊 ???  
----------------解决方案--------------------------------------------------------
int a[]
整型太小了
a[num+500000] 这中数据放不了

----------------解决方案--------------------------------------------------------
有没有中文
----------------解决方案--------------------------------------------------------

题目是英文的啊 !~
大致意思是输入两个数 m和n,然后再输入m个数,输出这m个数中的最大的n个数.


----------------解决方案--------------------------------------------------------
大数组要定义为全局的.........

----------------解决方案--------------------------------------------------------

你定义的是整型数组 ,但是里面存放的数据已经超出整型的范围啊


----------------解决方案--------------------------------------------------------
以下是引用liulanghan在2007-8-6 17:07:01的发言:

题目是英文的啊 !~
大致意思是输入两个数 m和n,然后再输入m个数,输出这m个数中的最大的n个数.

如果是这样只要先排序,然后输出排序后的前n的数就可以了


----------------解决方案--------------------------------------------------------

排序会超时的!~时间只有1000MS
为什么大数足要用全局变量啊 ??


----------------解决方案--------------------------------------------------------

刚才提交成功了,只要把数组改成全局的就可以了,可是大家能告诉我为什么大数组要用全局的吗???


----------------解决方案--------------------------------------------------------
  相关解决方案