hdu前M大的数

来源:互联网 发布:mac terminal 清屏 编辑:程序博客网 时间:2024/06/07 06:50

裸的哈希==其实根本算不上什么算法的==

前m大的数

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 13271    Accepted Submission(s): 4521


Problem Description
还记得Gardon给小希布置的那个作业么?(上次比赛的1005)其实小希已经找回了原来的那张数表,现在她想确认一下她的答案是否正确,但是整个的答案是很庞大的表,小希只想让你把答案中最大的M个数告诉她就可以了。
给定一个包含N(N<=3000)个正整数的序列,每个数不超过5000,对它们两两相加得到的N*(N-1)/2个和,求出其中前M大的数(M<=1000)并按从大到小的顺序排列。
 

Input
输入可能包含多组数据,其中每组数据包括两行:
第一行两个数N和M,
第二行N个数,表示该序列。

 

Output
对于输入的每组数据,输出M个数,表示结果。输出应当按照从大到小的顺序排列。
 

Sample Input
4 41 2 3 44 55 3 6 4
 

Sample Output
7 6 5 511 10 9 9 8
#include <iostream>#include<cstdio>#include<cstring>using namespace std;int b[10000];int a[5000];int main(){    int m,n;    while(~scanf("%d%d",&n,&m))    {         int maxn=0;         memset(b,0,sizeof(b));         for(int i=0;i<n;i++)         {              scanf("%d",&a[i]);              for(int j=0;j<i;j++)              {                   b[a[i]+a[j]]++;                   if(a[i]+a[j]>maxn) maxn=a[i]+a[j];              }         }         printf("%d",maxn);         b[maxn]--;         int cnt=2,i=maxn;         while(cnt<=m)         {              if(!b[i]) i--;              else              {                    cnt++;                    printf(" %d",i);                    b[i]--;              }         }         printf("\n");    }    return 0;}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机相册占内存怎么办 华为nova3声音小怎么办 深圳怎么办停车月卡 辐射避难所死爪来了怎么办 大都会出站没刷怎么办 metro大都会进站没刷到怎么办 大连玉石被骗了怎么办 大连君悦会员怎么办 学生卡丢了怎么办 买保险想退保怎么办 交房通知单丢失怎么办 全款买期房烂尾怎么办 期房如果烂尾怎么办 开发商推迟交房怎么办 永外还有平房怎么办 房子办不了贷款怎么办 公司网限速了怎么办 浩华北郡以后怎么办 被网上酒托骗了怎么办 股票破产了钱怎么办 被新湖期货骗了怎么办 山姆会员超市会员卡怎么办 贸易公司没有进项发票怎么办 邮政快递少件怎么办 圆通快递少件怎么办 洗衣服时染上颜色怎么办 洗衣服染上别的颜色怎么办 洗衣服染上其他颜色怎么办 做棉花糖粘锅了怎么办 同事借钱不想借怎么办 同事向你借钱怎么办 老板跑路员工工资怎么办 人丹吃了一包怎么办 体重秤出现负数怎么办 室内做立面不会材料怎么办 恶性软巢囊肿怎么办 小东西弄没了怎么办 d一二聚体偏高怎么办 新衣服的磁扣怎么办 车警报器一直响怎么办 收银台后面有门怎么办