HDOJ 1280 前m大的数(水题)
2016-10-12 23:17
351 查看
前m大的数
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 17201 Accepted Submission(s): 5871
[align=left]Problem Description[/align]
还记得Gardon给小希布置的那个作业么?(上次比赛的1005)其实小希已经找回了原来的那张数表,现在她想确认一下她的答案是否正确,但是整个的答案是很庞大的表,小希只想让你把答案中最大的M个数告诉她就可以了。
给定一个包含N(N<=3000)个正整数的序列,每个数不超过5000,对它们两两相加得到的N*(N-1)/2个和,求出其中前M大的数(M<=1000)并按从大到小的顺序排列。
[align=left]Input[/align]
输入可能包含多组数据,其中每组数据包括两行:
第一行两个数N和M,
第二行N个数,表示该序列。
[align=left]Output[/align]
对于输入的每组数据,输出M个数,表示结果。输出应当按照从大到小的顺序排列。
[align=left]Sample Input[/align]
4 4
1 2 3 4
4 5
5 3 6 4
[align=left]Sample Output[/align]
7 6 5 5
11 10 9 9 8
[align=left]Author[/align]
Gardon
[align=left]Source[/align]
杭电ACM集训队训练赛(VI)
思路:
水题,题意是n个数两两相加的和的前m大的数。直接两重循环过。
代码:
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; int a[3005],b[4500000]; int main() { freopen("in.txt","r",stdin); int m,n; while(scanf("%d%d",&m,&n)!=EOF) { for(int i=0;i<m;i++) { scanf("%d",&a[i]); } int l=0; for(int i=0;i<m;i++) for(int j=i+1;j<m;j++) { b[l]=a[i]+a[j]; l++; } sort(b,b+l); printf("%d",b[l-1]); for(int i=l-2;i>l-n-1;i--) { printf(" %d",b[i]); } printf("\n"); } return 0; }
相关文章推荐
- hdoj上的一些水题
- hdoj 1305字典树水题之二
- hdoj 1280 前m大的数 【sort】
- HDOJ 2001 计算两点间的距离(水题)
- 继续水题,HDOJ.杭电2033,人见人爱A+B。
- HDOJ 2109 Fighting for HDU(水题)
- HDOJ2003 ( 求绝对值 ) 【水题】
- HDOJ 2148 Score(水题)
- HDOJ2015 ( 偶数求和 ) 【水题】
- hdoj prerequisites? (水题)
- [水题][hdoj_1093]A+B for Input-Output Practice (V)
- hdoj 1202 the calculation of GPA(水题)
- 【水题】hdoj1282回文数猜想
- HDOJ 1048 水题
- HDOJ(HDU) 1555 How many days?(水题)
- HDOJ 2504 又见GCD (水题)
- hdoj--2803--The MAX(水题)
- HDOJ 2803 The MAX【水题】
- hdoj 2803 The MAX 【水题】
- HDOJ/HDU 2537 8球胜负(水题.简单的判断)