UVa 400
#include <algorithm>
#include <iostream>
#include <string>
using namespace std;
const int maxcol=60;
const int maxn=105;
string filename[maxn];
void print(const string &s,int len,char extra){
cout<<s;
for(int i=0;i<len-s.length();i++){
cout<<extra;
}
}
int main()
{
int n;
while(cin>>n){
int M=0;
for(int i=0;i<n;i++){
cin>>filename[i];
M=max(M,(int)filename[i].length());
}
int cols=(maxcol-M)/(M+2)+1;
int rows=(n-1)/cols+1;
print("",60,'-');
cout<<endl;
sort(filename,filename+n);
for(int r=0;r<rows;r++){
for(int c=0;c<cols;c++){
int idx=c*rows+r;//二维坐标转换为一维数组的下标
if(idx<n){//有可能有不满rows*cols的情况,筛除
print(filename[idx],c==cols-1?M:M+2,' ');
}
}
cout<<endl;
}
}
return 0;
}