Newguy


私信TA

用户名:772007765

访问量:88800

签 名:

已秃人士

等  级
排  名 29
经  验 15363
参赛次数 3
文章发表 92
年  龄 0
在职情况 在职
学  校
专  业

  自我简介:

TA的其他文章

描述

ACM俱乐部要照大合照了!

"顺序怎么排?"

"按会员编号吗?"

"我们可是学计算机考研的人唉!"

"那么还是以会员编号为依据吧。但是不是单纯按编号大小排列,而是让这些编号连在一起之后组成的那个整数最小。"

输入

输入有多组数据。


每组数据两行。


第一行包含一个正整数n(小于等于10000),代表会员人数。


第二行包含n个正整数(小于等于10000000),代表各会员的编号,编号可能有相同。


输出

对应每组数据,输出一个正整数,这些会员编号连接成的最小的整数。


样例输入1

7
14 36 154 58 36 3 8
9
5534 5226 5636 99956 30 135 35 8 77

样例输出1

1415433636588
135303552265534563677899956

import java.util.*;  
  
public class Main  {  
	static String[] num;
	//重写快排
	public static void Quicksort(int s, int e) {
		if (s >= e)
			return ;
		int i = s, j = e;
		String tmp = num[s];
		while (i != j) {
			while (i < j && tmp.concat(num[j]).compareTo(num[j].concat(tmp)) <= 0)
				j--;   
			String tmp2 = num[i];
			num[i] = num[j];
			num[j] = tmp2;
			while (i < j && tmp.concat(num[i]).compareTo(num[i].concat(tmp)) >= 0)
				i++;   
			tmp2 = num[i];
			num[i] = num[j];
			num[j] = tmp2;
		}
		Quicksort(s, i-1);
		Quicksort(i+1, e);
	}
	
    public static void main(String args[]){  
        Scanner input = new Scanner(System.in);  
        while (input.hasNext()) {
        	int n = input.nextInt();
        	num = new String[10000];
        	for (int i = 0; i < n; i++) 
        		num[i] = input.next();
        	Quicksort(0, n-1);
        	for (int i = 0; i < n; i++)
        		System.out.print(num[i]);
        	System.out.println();
        }
    }  
}


 

0.0分

0 人评分

  评论区

  • «
  • »