难度:2
属于比较简单的排序模拟题,直接写就可以了。
#include <bits/stdc++.h>
#define fi first
#define se second
#define pb push_back
#define all(x) (x).begin(), (x).end()
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> pa;
int main() {
int n;
while (cin >> n) {
for (int i = 0; i < 60; i++) {
cout << '-';
}
cout << endl;
string s[105];
int Max = -1;
for (int i = 0; i < n; i++) {
cin >> s[i];
if ((int) s[i].size() > Max) Max = s[i].size();
}
sort(s, s + n);
int c = 62 / (Max + 2);
int r;
if (n % c == 0) r = n / c;
else r = n / c + 1;
for (int i = 0; i < r; i++) {
for (int j = 0; j < c; j++) {
int t = i + j * r;
if (t >= n) break;
cout << s[t] << (j < c - 1 ? " " : "");
for (int k = 0; k < Max - (int) s[t].size(); k++) {
cout << ' ';
}
}
cout << endl;
}
}
return 0;
}