Unix ls UVA - 400
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
const int Maxcol=60;
const int Maxn=100+5;
string filenames[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>>filenames[i];
M=max(M,(int)filenames[i].length());
}
int cols=(Maxcol-M)/(M+2)+1,row=(n-1)/cols+1;
print("",60,'-');
cout<<"\n";
sort(filenames,filenames+n);
for(int r=0;r<row;r++)
{
for(int c=0;c<cols;c++){
int idx=c*row+r;
if(idx<n)print(filenames[idx],c==cols-1?M:M+2,' ');
}
cout<<"\n";
}
}
return 0;
}
#include<iostream>
#include<algorithm>
using namespace std;
string name[120];
void inc(int x)
{
for(int i=1;i<=x;i++)
{
cout<<' ';
}
}
int main()
{
int n;
while(cin>>n)
{
int maxlen=0;
for(int i=0;i<n;i++)
{
cin>>name[i];
if(maxlen<name[i].length())maxlen=name[i].length();
}
int lie=62/(maxlen+2);
sort(name,name+n);
cout<<"------------------------------------------------------------\n";
int sQ=(n%lie==0?n/lie:n/lie+1);
for(int i=0;i<sQ;i++)
{
for(int k=0;k<lie;k++)
{
if(i+k*sQ>=n)break;
string str=name[i+k*sQ];
int sum=maxlen-str.length();
if(k!=(lie-1))sum+=2;
cout<<str;
inc(sum);
}
cout<<"\n";
}
}
return 0;
}