杭电1280java实现

简介: 还记得Gardon给小希布置的那个作业么?(上次比赛的1005)其实小希已经找回了原来的那张数表,现在她想确认一下她的答案是否正确,但是整个的答案是很庞大的表,小希只想让你把答案中最大的M个数告诉她就可以了。

前m大的数:



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 4

1 2 3 4

4 5

5 3 6 4


Sample Output


7 6 5 5

11 10 9 9 8


刚开始想用hashset却发现里面有重复值。后来想用list,虽然能够实现操作。但是一直超时,因为超内存,后来想了下,list每次增加的时候都会申请一个新的数组,如果数据过多肯定会爆内存,后来使用大数组粗存,每次只使用其中的前一部分,并且也支持排序只排前一部分,以前还没见到过这张的处理,记录下来。是对list和数组都增加了理解。


代码如下:


import java.util.Arrays;
import java.util.Scanner;
public class 杭电1280 {
  static int a[]=new int[3002];
  public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);    
    int b[]=new int[5000000];   
    while(sc.hasNext())
    {
          int n=sc.nextInt();//数据个数
          int m=sc.nextInt();//前m大
          int number=0;
          for(int i=0;i<n;i  )
          {
            a[i]=sc.nextInt();
          }
          for(int i=0;i<n;i  )
          {
            for(int j=i 1;j<n;j  )
            {
            b[number  ]=(a[i] a[j]);
            }
          }
          Arrays.sort(b, 0, (n-1)*n/2);
          int x=number-1;
          for(int i=0;i<m;i  )
          {
            if(i==m-1)System.out.println(b[x-i]);
            else
          System.out.print(b[x-i] " ");
          }
    }
  }
}
目录
相关文章
|
5月前
|
Java
杭电 OJ 1010-1019 Java解法(未更新完毕)
杭电 OJ 1010-1019 Java解法(未更新完毕)
27 1
|
5月前
|
Java
杭电acm1201 18岁生日 Java解法 时间类
杭电acm1201 18岁生日 Java解法 时间类
25 0
|
5月前
|
算法 Java
杭电 OJ 1000-1009 Java解法
杭电 OJ 1000-1009 Java解法
22 0
|
5月前
|
Java
杭电acm2018 母牛的故事 Java解法 经典递归
杭电acm2018 母牛的故事 Java解法 经典递归
24 0
|
5月前
|
Java BI
杭电acm1013 Digital Roots 数字根 Java解法 高精度
杭电acm1013 Digital Roots 数字根 Java解法 高精度
28 0
|
Java
Java 实现汉字按照首字母分组排序
Java 实现汉字按照首字母分组排序
712 0
|
Java 数据安全/隐私保护
JAVA 实现上传图片添加水印(详细版)(上)
JAVA 实现上传图片添加水印(详细版)
1260 0
JAVA 实现上传图片添加水印(详细版)(上)
|
存储 Java
Java实现图书管理系统
本篇文章是对目前Java专栏已有内容的一个总结练习,希望各位小主们在学习完面向对象的知识后,可以阅览本篇文章后,自己也动手实现一个这样的demo来加深总结应用已经学到知识并进行巩固。
417 0
Java实现图书管理系统
|
分布式计算 Java Hadoop
Java实现单词计数MapReduce
本文分享实现单词计数MapReduce的方法
330 0
|
Java Windows Spring
java实现spring boot项目启动时,重启Windows进程
java实现spring boot项目启动时,重启Windows进程
506 0