time limit per test3 seconds
memory limit per test256 megabytes
inputstandard input
outputstandard output
The first line contains integer n — the number of strings (1 ≤ n ≤ 5·104).
Each of the next n lines contains one string ai (1 ≤ |ai| ≤ 50) consisting of only lowercase English letters. The sum of string lengths will not exceed 5·104.
Print the only string a — the lexicographically smallest string concatenation.
4
abba
abacaba
bcd
er
abacabaabbabcder
5
x
xx
xxa
xxaa
xxaaa
xxaaaxxaaxxaxxx
3
c
cb
cba
cbacbc
题意
给你n个串,然后你要组合这n个串,使得n个串的字典序最小。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 50000 + 10;
string s[maxn];
bool cmp(const string &a,const string &b){
return a + b < b + a;
}
int main()
{
int n;
while(scanf("%d",&n) == 1){
for (int i = 0; i < n; ++i)
cin >> s[i];
sort(s,s+n,cmp);
for (int i = 0; i < n; ++i)
cout << s[i];
printf("\n");
}
return 0;
}