Ranking (as of 2013-06-09): 794 out of 3046
Language: C++
/*
UVa 400 - Unix ls
To build using Visual Studio 2008:
cl -EHsc -O2 unix_ls.cpp
*/
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
const int max_length = 60;
int nr_names;
while (cin >> nr_names) {
vector<string> names(nr_names);
int max_name_length = 0;
for (int i = 0; i < nr_names; i++) {
cin >> names[i];
max_name_length =
max(max_name_length, static_cast<int>(names[i].length()));
}
sort(names.begin(), names.end());
int nr_columns = 1;
for (int l = max_name_length * 2 + 2;
l <= max_length; l += max_name_length + 2)
nr_columns++;
int nr_rows = (nr_names + nr_columns - 1) / nr_columns;
cout << "------------------------------------------------------------\n";
for (int i = 0; i < nr_rows; i++) {
for (int j = 0; j < nr_columns; j++) {
int ni = i + nr_rows * j;
if (ni < nr_names) {
cout << names[ni];
int l = max_name_length - names[ni].length();
if (j < nr_columns - 1)
l += 2;
for (int k = 0; k < l; k++)
cout << ' ';
}
else
break;
}
cout << endl;
}
}
return 0;
}
No comments:
Post a Comment