T792564 【C1036】 - Unix ls命令

题目描述

你所就职的计算机公司正在推出全新的计算机产品线,并且正在开发一款新的类Unix操作系统,该操作系统将与新计算机一同推出。你的任务是编写ls函数的格式化程序。 你的程序最终将从管道中读取输入(尽管目前你的程序将从输入文件中读取)。输入到你的程序将包括一列(F)文件名,你将根据ASCII字符值的升序对其进行排序,并根据最长文件名(L)的长度格式化为(C)列。 每个文件名长度将在1到60(包括)字符之间,并将格式化为左对齐的列。最右边的一列将是最长文件名的宽度,所有其他列将是最长文件名加2的宽度。 格式化显示尽可能多的列,以适应60个字符的宽度(列显示优先),你的程序应该尽量使用较少的行数(R),并且行应该从左到右填满容量。

输入格式

第1行,一个正整数N,代表接下来有N个文件名 接下来N行,有N个代表文件名的字符串,每个字符串占一行 文件名字符串允许的字符为字母、数字字符(a到z,A到Z,以及0到9),以及以下字符集中的字符 {`.`、`_`、`-`}(不包括花括号)。 所有文件名中都不会出现非法字符,也不会有完全空白的行。

输出格式

第1行,输出一行恰好包含60个短横线(`-`) 接下来是格式化后的文件名列表,显示时按照文件名ASCII字符值的升序的顺序进行排列: 第1个文件名 到 第R个文件名 排在第1列 第R + 1个文件名 到 第2R个文件名 排在第2列 其他以此类推 具体参考输入输出样式

说明/提示

**【输入输出样例解释】** 本题题意比较难理解,这里做一个简要的解释(以第1组数据做说明): 1. 输入N个字符串,然后需要对字符串进行按ASCII字符值的升序对其进行排序 2. 格式化显示这些字符串: - 需要在60个字符宽度内显示 - 按列优先的方式左对齐输出 - 显示的最后一列的宽度为最长文件名的宽度M,其他列的宽度为最长文件名的宽度M + 2个字符宽度 - 用空格补齐对应的显示宽度 这里用一张简单的图示来说明下: ![](https://cdn.luogu.com.cn/upload/image_hosting/s1znppgk.png) **【数据范围与提示】** 100%的数据:$1 \le N \le 100$,1